O seguinte código
if [ $a == "apple" ];
then
echo "True"
else
echo "False"
fi
saídas "True"
( "False"
) se a="apple"
( a="plum"
). A comparação falha se usar curingas:
if [ $a == "appl"* ];
e é fixo se for substituído [
por [[
:
if [[ $a == "appl"* ]];
Qual é a diferença entre [
e [[
nas if
declarações?
[
é um comando (basicamente uma variante dotest
comando).[[
é um builtin em muitos shells.foo*
dentro[...]
da expansão do nome do arquivo (também conhecido como globbing); enquanto ocorre[[...]]
a correspondência de padrões internos .[[
é mais poderoso e capaz do que[
, mas não deve ser usado se a portabilidade for uma preocupação.[
e[[
não fazem parte daif
sintaxe, você pode usá-los como em[ "$exit" = 'yes' ] && exit
.[...]
você deve preferir=
em vez de==
. Tanto quanto eu sei, o segundo é aceito em muitos shells, mas não é compatível com POSIX.A propósito, recomendo que você coloque aspas duplas em suas variáveis, mesmo que realmente saiba como a divisão de palavras se comportará.