当前位置: 首页 > 面试题库 >

如何在Linux Shell脚本中提示输入Yes / No / Cancel?

郝峰
2023-03-14
问题内容

我想在shell脚本中暂停输入,并提示用户选择。
标准YesNoCancel类型问题。
如何在典型的bash提示中完成此操作?


问题答案:

该命令是在shell提示符下获取用户输入的最简单,使用最广泛的方法read。演示其用法的最佳方法是一个简单的演示:

html" target="_blank">while true; do
    read -p "Do you wish to install this program?" yn
    case $yn in
        [Yy]* ) make install; break;;
        [Nn]* ) exit;;
        * ) echo "Please answer yes or no.";;
    esac
done

史蒂芬·休伊格(StevenHuwig)指出的另一种方法是Bash的命令。这是使用的相同示例:selectselect

echo "Do you wish to install this program?"
select yn in "Yes" "No"; do
    case $yn in
        Yes ) make install; break;;
        No ) exit;;
    esac
done

随着select你并不需要净化输入-它显示可用的选项,你键入相应的你的选择一个号码。它还会自动循环,因此while true如果输入无效,则无需重试循环。

此外,LEA格里斯表现出一种方法,使在请求语言无关她的回答。修改我的第一个示例以更好地服务于多种语言可能看起来像这样:

set -- $(locale LC_MESSAGES)
yesptrn="$1"; noptrn="$2"; yesword="$3"; noword="$4"

while true; do
    read -p "Install (${yesword} / ${noword})? " yn
    case $yn in
        ${yesptrn##^} ) make install; break;;
        ${noptrn##^} ) exit;;
        * ) echo "Answer ${yesword} / ${noword}.";;
    esac
done

显然,这里没有翻译其他通信字符串(安装,回答),这需要通过更完整的翻译来解决,但是在许多情况下,即使是部分翻译也将有所帮助。



 类似资料:
  • 我有一个Powershell脚本,它需要执行一个命令行可执行文件,提示用户输入(没有命令行参数)。大概是这样的: 实际的可执行文件是一个编译过的二进制文件,我不能修改它,但是这个示例脚本可以解决这个问题。我的Powershell脚本调用可执行文件: 在运行时,我会被提示输入一些内容: 我需要能够在没有用户干预的情况下填写输入请求。当< code>promptsForInput.ps1提示用户输入时

  • 如果字符串为y/yes,则返回 true ;如果字符串为n/no,则返回 false。 使用 RegExp.test() 来检查字符串是否为y/yes 或者 n/no。 省略第二个参数,def 将默认答案设置为 no。 const yesNo = (val, def = false) => /^(y|yes)$/i.test(val) ? true : /^(n|no)$/i.test(val

  • 问题内容: 考虑以下代码: 上面的代码只是演示我正在尝试实现的方法。我想使用类型提示。 您知道如何以一种优雅的方式达到预期效果吗? 问题答案: 自3.6以来,类型化命名元组的首选语法为 编辑 从Python 3.7开始,请考虑使用(您的IDE可能尚不支持它们进行静态类型检查):

  • 我的应用程序背景很暗,但在iOS 7中,状态栏变得透明。所以我看不到任何东西,只有角落里的绿色电池指示灯。如何将状态栏文本颜色更改为与主屏幕上相同的绿色或橙色? 我知道关于 > 在plist中将

  • 问题内容: 我希望在DTSX程序包中有一个sql查询,并且希望有某种提示来更新null列的值。请参阅下面的内容: 我希望能够被提示输入QuoteNumber和ItemNumber,然后根据需要更新脚本。这有可能吗,如果可以的话我该怎么办? 问题答案: 可以通过以下方式实现:这将在您的初始脚本组件中。 这应该是包中用于设置变量值或构造SQL Command的初始组件。

  • 我有一个HTML元素. 加载页面后,我可以使用从该元素获取文本。 但随后我点击这个元素并更改里面的文本(例如,改为“已编辑”)。DOM中没有任何变化,包括属性 的值(即仍然返回“initial”,并且DOM中的元素看起来像) 如何提取现在在浏览器中可见的值(即字符串“已编辑”)?我需要执行一些JavaScript或其他东西吗?