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