Bash: перебирать массив и использовать в качестве опций в регистре - PullRequest
0 голосов
/ 12 ноября 2019

Я пытаюсь перебрать массив и установить параметры для интерактивного выбора. Не могу понять правильный синтаксис и / или способ сделать это. Вот что у меня есть, пока.

array=(red blue green yellow)
PS3='Select option: '
echo "Options are $array"

select opt in "${array[@]}"
do
  case $opt in
    for c in "${array[@]}" do
      export COLOR="${array[$c]}"
      break
      ;;
    done
  esac
done

Не уверен, что я делаю неправильно с синтаксисом или подходом, но я получаю следующую ошибку:

syntax error near unexpected token `c'

Ожидаемое поведение будет:

Select choice:
1) red
2) blue
3) green
4) yellow

1 Ответ

2 голосов
/ 12 ноября 2019

Вам не нужен цикл for или case. Значение $opt - это цвет, который они выбрали.

select opt in "${array[@]}"
do
  if [ "$opt" ]
  then export COLOR="$opt"; break
  fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...