Zkoušel jsem použít toto:
$ if [$a == 1] then { echo 'yes'; } fi;
ale dostávám chybu:
-bash: syntax error near unexpected token `}'
Jaký je správný formát? Zkusil jsem několik neúspěšně.
Přijatá odpověď:
[ je jen další postava, podle bashe; není to samovymezující. Takže kolem [ musíte umístit mezery a ] . I když by bylo lepší použít [[ a ]] .
A příkaz následující if (ano, [ je příkaz) musí být ukončen znakem ; nebo nový řádek.
Nakonec == (což není posix, FWIW; posix preferuje = ) je řetězcová rovnost, nikoli číselná rovnost.
Takže jste možná mysleli:
if [[ $a -eq 1 ]]; then echo yes; fi
Ale můžete místo toho použít aritmetické vyhodnocení:
if ((a == 1)); then echo yes; fi
(V aritmetickém vyhodnocení je rovnost == a nepotřebujete $ před názvy proměnných. Vím, že je to matoucí.)
Další informace o [ :help test . O [[ :help [[ (který staví na test ). O (( :help let . O bash :man bash