【问题标题】:Dynamic option selection in bash?bash中的动态选项选择?
【发布时间】:2014-12-09 21:24:15
【问题描述】:

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

$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

【问题讨论】:

    标签: macos bash selection options


    【解决方案1】:

    你知道select吗?

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

    【讨论】:

    • 啊,完美!谢谢!
    【解决方案2】:

    要在换行符上拆分 $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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 2018-01-11
      相关资源
      最近更新 更多