从bash脚本中回答[Y/n]提示

从bash脚本中回答[Y/n]提示,bash,ubuntu,prompt,Bash,Ubuntu,Prompt,我见过其他人写这方面的文章,但对我来说没有任何效果。当我要删除一个程序时,我想对脚本中的提示回答“是”。以下是我目前的脚本: #!/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

我见过其他人写这方面的文章,但对我来说没有任何效果。当我要删除一个程序时,我想对脚本中的提示回答“是”。以下是我目前的脚本:

#!/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
我读到“期望”应该起作用,但它没有起作用,除非我做错了什么。任何建议都将不胜感激


George

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

#!/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”等。

那么我该如何将其添加到脚本中?例如,在remove命令下,当它要删除程序时,会提示我输入yes或no命令,那么,我如何让脚本为我回答这个问题呢?
apt get
有一个标志
--yes
。为什么在
echo
之前有
$a
用于
安装
案例?我在那里是为了让脚本的该部分看起来更干净。我希望它执行
$a
是什么,然后
echo
在末尾通常不应该将要执行的代码存储在变量中。而是定义一个shell函数
a(){code to install packages;}
。好的,谢谢你的提示:)