Bash:遍历数组并在case语句中用作选项

Bash:遍历数组并在case语句中用作选项,bash,Bash,我正在尝试循环一个数组,并为交互式选择设置选项。似乎无法找出正确的语法和/或方法。这是我到目前为止所拥有的 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]}" b

我正在尝试循环一个数组,并为交互式选择设置选项。似乎无法找出正确的语法和/或方法。这是我到目前为止所拥有的

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

对于循环或
案例
,您不需要
$opt
的值是他们选择的颜色

select opt in "${array[@]}"
do
  if [ "$opt" ]
  then export COLOR="$opt"; break
  fi
done

对于
循环或
案例
,您不需要
$opt
的值是他们选择的颜色

select opt in "${array[@]}"
do
  if [ "$opt" ]
  then export COLOR="$opt"; break
  fi
done

为什么不干脆
选择opt-in“${array[@}”do export COLOR=“$opt”break;done
?为什么第二次迭代数组?有什么原因吗?您现在已经选择了选项,它在
opt
中。为什么不干脆
选择opt-in“${array[@}”do export COLOR=“$opt”;break;done
?为什么第二次迭代数组?有原因吗?您现在已经选择了选项,它位于
opt
中。