Intenté usar esto:
$ if [$a == 1] then { echo 'yes'; } fi;
pero me sale un error:
-bash: syntax error near unexpected token `}'
¿Cuál es el formato correcto? Probé varios sin suerte.
Respuesta aceptada:
[
es solo otro personaje, según bash; no se autodelimita. Entonces necesitas poner espacios alrededor de [
y ]
. Aunque sería mejor usar [[
y ]]
.
Y el comando que sigue a if
(sí, [
es un comando) debe terminar con un ;
o una nueva línea.
Finalmente, ==
(que no es posix, FWIW; posix prefiere =
) es igualdad de cadenas, no igualdad numérica.
Así que podrías haber querido decir:
if [[ $a -eq 1 ]]; then echo yes; fi
Pero podría usar la evaluación aritmética en su lugar:
if ((a == 1)); then echo yes; fi
(En evaluación aritmética, la igualdad es ==
, y no necesitas $
antes de los nombres de las variables. Sé que es confuso.)
Para más información sobre [
:help test
. Acerca de [[
:ayuda [[
(que se basa en test
). Acerca de ((
:help let
. Acerca de bash
:man bash