bash中的动态选项选择?

时间:2014-12-09 21:24:16

标签: macos bash selection options

我在脚本中有一个变量,它有几行单词

$loremipsums基本上是这样的:

something1
something2
something3
something4

现在$loremipsums是动态的;它可以更多或更少,并且可以是不同的值,具体取决于它从某个文件中读取的内容。我还想使用用户在变量中选择的内容。

我想动态地将它们变成选项选择菜单。我在这里找到了一个显示基本的:https://askubuntu.com/questions/1705/how-can-i-create-a-select-menu-in-a-shell-script

现在我需要动态地完成它。如您所见,他们通过该示例手动设置。

这是我想要的一个例子:

1) michael
2) richard
3) steven
4) robert
5) exit
Please enter your choice: 4
You have chosen robert

2 个答案:

答案 0 :(得分:5)

您知道select吗?

names=( michael richard steven robert exit )
select name in "${names[@]}"; do
    echo "You have chosen $name"
    [[ $name == exit ]] && break
done

答案 1 :(得分:3)

要在换行符上拆分$ loremipsums,然后选择其中一个:

oldIFS=$IFS
IFS=$'\n'
choices=( $loremipsums )
IFS=$oldIFS
PS3="Please enter your choice: "
select answer in "${choices[@]}"; do
  for item in "${choices[@]}"; do
    if [[ $item == $answer ]]; then
      break 2
    fi
  done
done
echo "$answer"