2012-04-12 13 views
6

Sto cercando di confrontare un argomento a bash sotto OSX utilizzando il seguente codice ...Bash: come confrontare gli argomenti con l'istruzione if?

#!/bin/bash 

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

Ma continuo a ricevere il seguente errore

$bash script.sh 1 

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

Come faccio a impedire che si cerca di valutare "1"?

risposta

18

[ è un comando di test, quindi è necessario uno spazio tra [ e "$1", così come uno spazio tra "1" e la chiusura ]

Modifica

Giusto per chiarire, è necessario lo spazio perché [ è una sintassi diversa del comando bash test, quindi il seguente è un altro modo di scrivere lo script:

#!/bin/bash 

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

che può essere ulteriormente semplificato per

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

non poteva digitare abbastanza veloce :) – KevinDTimm

Problemi correlati