Unix ksh: несколько условий в операторе if, проверка 3 переменных одновременно

Я пытаюсь проверить пользовательский ввод, в основном var1, var2 и var3, должен быть в c1, c2, c3, c4, c5, c6, c7. я в кш

Я попробовал оператор if с -a и -o, и это не сработало, я попытался поиграть с [] окружающими переменными, не работает, я попытался опустить &&, ничего. Кто-нибудь может помочь?

пример:

if [[ "$var1" && "$var2" && "$var3"   =  "$c1" || "$c2" || "$c3" || "$c4" || "$c5" || "$c6" || "$c7" ]]

Пример:

case "$var1" -a "$var2" -a "$var3" in 
                    "$c1"|"$c2"|"$c3"|"$c4"|"$c5"|"$c6"|"$c7")

Я также пытался поместить c1 в c7 внутри оператора select, но это не позволяет мне выбрать из него 3 переменные. Любое решение? Спасибо


person learnerNo1    schedule 18.04.2011    source источник


Ответы (1)


Вы не можете протестировать несколько переменных таким образом.

Напишите функцию для проверки допустимости одной переменной, а затем выполните цепочку вызовов.

isValid()
{
    local value=$1
    case $value in 
        "$c1"|"$c2"|"$c3"|"$c4"|"$c5"|"$c6"|"$c7")
              return 0
              ;;
    esac
    return 1
}

if isValid $var1 && isValid $var2 && isValid $var3 ; then
   echo "All valid"
fi
person Douglas Leeder    schedule 18.04.2011