2012-04-12 8 views
6

Estoy tratando de comparar una discusión en bash en OSX usando el siguiente código ...Bash: ¿Cómo comparar argumentos con la declaración if?

#!/bin/bash 

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

pero aparece el siguiente error

$bash script.sh 1 

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

¿Cómo puedo evitar que se trata de evaluar "1"?

Respuesta

18

[ es un comando de prueba, por lo que necesita un espacio entre [ y "$1", así como un espacio entre "1" y el cierre ]

Editar

Solo para aclarar, se necesita el espacio porque [ es una sintaxis diferente del comando bash test, por lo que la siguiente es otra forma de escribir el script:

#!/bin/bash 

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

se puede simplificar aún más a

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

no podía escribir lo suficientemente rápido :) – KevinDTimm

Cuestiones relacionadas