如何将 foreach 循环与 **switch-case** 连接起来

如何将 foreach 循环与 **switch-case** 连接起来

我有一个包含几个字符串值的数组,并且我可以在控制台中正确地输出它:

for element in "${answers[@]}"
do echo $element
done

出去:

1

2

5

但我需要对数组中的每个值执行一些命令:

例如此实现不执行任何操作:

for element in "${answers[@]}";
do 

#    switch $element {
    case $element in
       1)
        echo "install app 1";;
       2)
        echo "install app 2";;
       3)
        echo "install app 3 ";;
esac 
done

继续尝试:

for element in "${answers[@]}";
do

    switch $element {
    case "1": echo "install app 1";;
    case "2": echo "install app 2";;
    case "3": echo "install app 3";;
}
done

我有例外:

./prepare_2.0.sh:第 15 行:意外标记echo' ./prepare_2.0.sh: line 15: 案例“1”附近出现语法错误:echo“install app 1”;;'

如何正确实现这个逻辑?

答案1

您拆分了字符串值,但第一次尝试时您没有使用它。只需将“1)”更改为“"1")”即可

对于“${answers[@]}”中的元素;做

case $element in
   "1")
    echo "install app 1";;
   "2")
    echo "install app 2";;
   "3")
    echo "install app 3 ";;
esac 

相关内容