【问题标题】:Bash - Multiple choice, user inputBash - 多项选择,用户输入
【发布时间】:2019-06-18 10:55:22
【问题描述】:

我是 bash 的新手,希望将适当的选择与该用户的配置文件参数相关联。问题是无法识别我的选择

我已经尝试过测试,但在意外标记 `newline' 附近出现语法错误

> echo "Name? Use, alphabetic letter from multiple choice. 
a)Donald
b)Alan 
c)Brian"

  read -p "Insert appropriate letter a, b or c" don ala br

  echo "Perfect" $don 
  echo "Perfect, OK" $ala 
  echo "Perfect, Nice" $br

  case "$dev" 
  echo "OK" 
  esac

我想点击字母,然后输入转到为配置文件定义参数的案例。 我遇到以下错误: 意外标记“换行符”附近的语法错误

【问题讨论】:

标签: bash


【解决方案1】:

select 通常用于命令行菜单。它通常只需要一个答案,但您可以通过以下方式对其进行调整:

#! /bin/bash

names=(Donald Alan Brian)
selected=()
PS3='Name? You can select multiple space separated options: '
select name in "${names[@]}" ; do
    for reply in $REPLY ; do
        selected+=(${names[reply - 1]})
    done
    [[ $selected ]] && break
done
echo Selected: "${selected[@]}"

【讨论】:

  • 不完全遵循代码流程。我们是否有更简单的方式开始我的方式。
【解决方案2】:

您当前的读取命令尝试将输入拆分为 3 个单词,将每个单词分配给 donalabr 之一。您只想阅读一个字,然后比较它与abc 中的每一个。您可以使用case 语句来做到这一点:

read -p "Insert appropriate letter a, b, or c" choice

case $choice in
  a) echo "Perfect $choice" ;;
  b) echo "Perfect, OK $choice" ;;
  c) echo "Perfect, Nice $choice" ;;
  *) echo "Unrecognized selection: $choice" ;;
esac

【讨论】:

  • 谢谢提示。您能否也给我指示如何链接帐户的创建参数。也许使用“如果”?均值,选择结束 - 现在跳到适当的值,塑造配置文件
猜你喜欢
  • 2015-12-02
  • 2013-10-06
  • 2018-08-02
  • 2013-05-06
  • 2017-06-20
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
相关资源
最近更新 更多