У меня есть массив с несколькими строковыми значениями, и я правильно могу он в консоли:
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)' на '"1")'
для элемента в "$ {answers [@]}"; делать
case $element in
"1")
echo "install app 1";;
"2")
echo "install app 2";;
"3")
echo "install app 3 ";;
esac