【问题标题】:Answer [Y/n] prompt from bash script从 bash 脚本回答 [Y/n] 提示
【发布时间】:2014-02-19 21:16:10
【问题描述】:

我看到其他人写过这个,但没有什么对我有用。当我要删除程序时,我想对脚本中的提示回答“是”。到目前为止,这是我的脚本:

#!/bin/bash

a="This is where all the packages will be listed to install"

echo "What do you want to do?"
while true; do
    read -p "Enter: install, remove, or cancel: " yn
    case $yn in
        [install]* ) $a echo "ROS successfully uninstalled"; break;;
        [remove]* ) sudo apt-get remove ros-*; break;;
        [cancel]* ) exit;;
        * ) echo "INVALID ANSWER!...";;
    esac

done

我读到“期望”应该有效,但它没有,除非我做错了什么。任何建议表示赞赏!

乔治

【问题讨论】:

  • 为什么echo 前面有$a 用于install 案例?
  • 我有它让脚本的那部分看起来更干净。我希望它执行 $a 的任何内容,然后在最后执行 echo
  • 一般来说,您不应该将要执行的代码存储在变量中。而是定义一个 shell 函数。 a () { code to install packages; }.
  • 好的,谢谢你的提示 :)

标签: bash ubuntu prompt


【解决方案1】:

删除您的案例条件周围的[],您可能也不想要*

#!/bin/bash

a="This is where all the packages will be listed to install"

echo "What do you want to do?"
while true; do
    read -p "Enter: install, remove, or cancel: " yn
    case $yn in
        install ) $a echo "ROS successfully uninstalled"; break;;
        remove ) sudo apt-get remove ros-*; break;;
        cancel ) exit;;
        * ) echo "INVALID ANSWER!...";;
    esac

done

他们在其他脚本中使用[yY]* 的原因是因为他们希望将输入与小写“y”或大写“y”匹配,后跟任何字符,如“Y”、“yes”、“YES”等.

【讨论】:

  • 那我该如何添加呢?例如,在删除命令下,当它要删除程序时,它会提示我输入是或否命令,那么我如何让脚本为我回答这个问题?
  • apt-get 有一个标志 --yes
猜你喜欢
  • 2017-09-04
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
  • 1970-01-01
相关资源
最近更新 更多