Как связать цикл foreach с ** случай переключателя **

У меня есть массив с несколькими строковыми значениями, и я правильно могу он в консоли:

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": повторите "приложение 1 установки";';

Как правильно реализовать эту логику?

1
задан 20 October 2018 в 18:39

1 ответ

Вы разбиваете строковое значение, но с первой попытки не используете его. Просто замените '1)' на '"1")'

для элемента в "$ {answers [@]}"; делать

case $element in
   "1")
    echo "install app 1";;
   "2")
    echo "install app 2";;
   "3")
    echo "install app 3 ";;
esac 
1
ответ дан 7 December 2019 в 15:12

Другие вопросы по тегам:

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