如何解决如何添加命令以将任何值放在参数上以回显无效输入
我必须保留是和别无选择,但我想放一些东西,如果我不输入是或否,以表明这是不可能的,我是新手,不知道该怎么做
echo "Do you wish to Exit?(yes/no)"
read input
if [ "$input" == "yes" ]
then
clear
exit
elif [ "$input" == "no" ]
then
clear
echo "Reloaded"
echo -e "\n"
elif [ "$input" == * ]
then
echo "Invalid Input"
fi ;;
解决方法
您在这里走在正确的轨道上,但是最后的条件检查导致了问题。
您正在检查最后一个块中是否有 "$input" == *
。当你像这样单独使用 *
时,你会得到一些古怪的行为。 shell 尝试将其扩展到当前目录中的所有文件。这意味着您可能会为条件提供太多参数,并且当当前目录中有多个文件时,应该会得到类似于 [: too many argument
的错误。如果除了给定脚本之外的目录为空,条件将扩展为 elif [ "$input" == some_file.txt]
并且脚本将继续并正常退出而没有所需的输出。请参阅 bash pattern matching 和 command expansion 文档。
这里最简单的解决方案是改用 else
。如果不满足前两个条件,则此块将执行,因此 $inputs
不是是或否。请参阅 bash conditional 文档。您的脚本应如下所示:
echo "Do you wish to Exit?(yes/no)"
read input
if [ "$input" == "yes" ]
then
clear
exit
elif [ "$input" == "no" ]
then
clear
echo "Reloaded"
echo -e "\n"
else
echo "Invalid Input"
fi
作为最后的评论,您可以通过使用 read
参数将 -p
命令简化为 1 行:
-p prompt output the string PROMPT without a trailing newline before attempting to read
这样你就可以把你的阅读压缩成read -p 'Do you wish to Exit? (yes/no)' input
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。