Como verificar várias condições em uma instrução IF

0

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?

    
por Vimal Kumar 12.10.2017 / 17:14

3 respostas

4

Você tem muitos colchetes e o if não deve ser capitalizado. Tente assim:

if [[ "$var1" == "$var2" || "$var1" == "$var3" || "$var1" == "$var4" ]]; then
    
por 12.10.2017 / 17:15
3

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
    
por 12.10.2017 / 17:38
0
[[ "$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 ...
    
por 11.11.2018 / 00:06