Может ли оператор Linux 'case' иметь понятие 'or'?

Другой способ разрешить подключение Windows 8.1 описан здесь. Он использует tigervnc из репозитория Ubuntu.

0
15.06.2017, 01:35
3 ответа

Если есть символ, который не может встречаться ни в одном из значений переменных, то вы можете использовать этот символ в качестве разделителя. Например, предположим, что вы определили, что ни значение x, ни значение y не могут содержать двоеточие

case ":${x}:${y}:" in
    *:one:*)
        echo "1"
        ;;
    *:two:*)
        echo "2"
        ;;
esac

. Это легко масштабируется до переменного количества строк. Но имейте в виду, что вам нужно найти символ (здесь :) или даже последовательность символов, которые не могут встречаться в проверяемых вами строках.

1
28.01.2020, 02:16

Нет, но вы можете перебирать значения и регистр в цикле:

for v in "$x" "$y"; do 
    case "$v" in
    one) echo "1"; break ;;
    two) echo "2"; break ;;
    esac
done

Это напечатает 1или 2для первого из $xи $y, которые совпадают. Конечно, что делать, если оба совпадают, решать вам.

3
28.01.2020, 02:16

Если вы знаете, какие возможные значения будут иметь $xи $y, вы можете построить строки, такие как "$x$y", и искать шаблоны глобусов, например:

case $x$y in
    *one*) echo "1" ;;
    *two*) echo "2" ;;
esac
1
28.01.2020, 02:16

Теги

Похожие вопросы