2012-04-12 15 views
6

Próbuję porównać argument w bash pod OSX używając następującego kodu ...Bash: jak porównać argumenty z instrukcją if?

#!/bin/bash 

if ["$1" == "1"] 
then 
     echo $1 
else 
     echo "no" 
fi 

ale wciąż otrzymuję następujący błąd

$bash script.sh 1 

script.sh: line 3: [1: command not found 
no 

Jak zatrzymać go od prób ocenić "1"?

Odpowiedz

18

[ jest polecenie testy, więc trzeba przestrzeń pomiędzy [ i "$1", jak również przestrzeń pomiędzy "1" i zamykanie ]

Edycja

Właśnie w celu wyjaśnienia, jest potrzebna przestrzeń ponieważ [ jest inną składnią polecenia bash test, więc poniżej przedstawiono inny sposób pisania skryptu:

#!/bin/bash 

if test "$1" == "1" 
then 
     echo $1 
else 
     echo "no" 
fi 

które mogą być jeszcze bardziej uproszczone do

#!/bin/bash 
[ "$1" == "1" ] && echo "$1" || echo "no" 
+0

nie mógł wpisać go wystarczająco szybko :) – KevinDTimm

Powiązane problemy