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