Если есть символ, который не может встречаться ни в одном из значений переменных, то вы можете использовать этот символ в качестве разделителя. Например, предположим, что вы определили, что ни значение x, ни значение y не могут содержать двоеточие
case ":${x}:${y}:" in
*:one:*)
echo "1"
;;
*:two:*)
echo "2"
;;
esac
. Это легко масштабируется до переменного количества строк. Но имейте в виду, что вам нужно найти символ (здесь :
) или даже последовательность символов, которые не могут встречаться в проверяемых вами строках.
Нет, но вы можете перебирать значения и регистр в цикле:
for v in "$x" "$y"; do
case "$v" in
one) echo "1"; break ;;
two) echo "2"; break ;;
esac
done
Это напечатает 1
или 2
для первого из $x
и $y
, которые совпадают. Конечно, что делать, если оба совпадают, решать вам.
Если вы знаете, какие возможные значения будут иметь $x
и $y
, вы можете построить строки, такие как "$x$y"
, и искать шаблоны глобусов, например:
case $x$y in
*one*) echo "1" ;;
*two*) echo "2" ;;
esac