Você tem muitos colchetes e o if
não deve ser capitalizado. Tente assim:
if [[ "$var1" == "$var2" || "$var1" == "$var3" || "$var1" == "$var4" ]]; then
Estou tentando testar várias condições na seguinte instrução if
:
If [[[ "$var1" = "$var2" || "$var1" = "$var3" || "$var1" = "$var4" ]]];
No entanto, quando executo a sintaxe mencionada acima, estou recebendo um erro. Alguém pode me ajudar em obter várias condições de verificação na instrução IF?
Você tem muitos colchetes e o if
não deve ser capitalizado. Tente assim:
if [[ "$var1" == "$var2" || "$var1" == "$var3" || "$var1" == "$var4" ]]; then
Pode ser mais fácil usar a sintaxe sh
padrão do que a (com erros de digitação, deve ser [[
em vez de [[[
) ksh
construct:
case $var1 in
"$var2" | "$var3" | "$var4") echo match;;
*) echo no match;;
esac
[[ "$var1" == "$var2" || "$var1" == "$var3" || "$var1" == "$var4" ]]
ou, por questões de legibilidade,
[[ "$var1" == "$var2" ]] ||
[[ "$var1" == "$var3" ]] ||
[[ "$var1" == "$var4" ]]
Ou com case
, como Stéphane Chazelas sugeriu , ou com um loop muito complicado sobre a variável nomes e usando uma referência de nome (em bash
ou ksh93
),
for var in var2 var3 var4; do
typeset -n v="$var"
if [[ "$var1" == "$v" ]]; then
# printf '%s has same value as var1\n' "$var"
found=1
break
fi
done
if [[ "$found" -eq 1 ]]; then ...
Tags test shell-script