bash 同时处理多个变量的情况

Gam*_*949 5 bash array case

我想知道是否有任何方法可以同时处理多个变量,如下所示:

#/bin/bash
arr1=(1 2)
arr2=(3 4)
foo=1
bar=2

case $foo && $bar in
    ${arr1[@]})
        echo "variables equal array 1!";;
    ${arr2[@]})
        echo "variables equal array 2!";;
    *)
        echo "variables do not exactly equal any array!";;
esac
Run Code Online (Sandbox Code Playgroud)

我不想将$foo$bar本身放入数组中,但如果绝对必要,我可以这样做。

Ste*_*itt 7

假设IFS\xe2\x80\x99 尚未更改其默认值:

\n
case "$foo $bar" in\n"${arr1[*]}") echo "variables equal array 1!" ;;\n"${arr2[*]}") echo "variables equal array 2!" ;;\n*) echo "variables do not exactly equal any array!" ;;\nesac\n
Run Code Online (Sandbox Code Playgroud)\n

仅当每个数组中存储的各个值中不存在分隔符(空格)时,这才是可靠的。

\n

  • 就像always(?) 一样,当试图以一种简单的方式将数组表示为单个字符串时,需要对可能的值进行一些限制。这里 `foo=a; bar='b c'` 给出与 `foo='a b' 相同的字符串;条=c`。 (3认同)