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