[英]how can i add a command to put any value on an argument to echo invalid input
我必须保留“是”和“否”的选择,但我想输入一些内容,如果我不输入“是”或“否”以表明这是不可能的,我对此并不陌生,不知道该怎么做
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 尝试将其展开到当前目录中的所有文件。 这意味着您可能会为条件提供太多 arguments,并且当当前目录中有多个文件时,应该会收到类似于[: too many argument
的错误。 如果目录为空,除了给定的脚本,条件将扩展为elif [ "$input" == some_file.txt]
并且脚本将继续并正常退出而没有所需的 output。 请参阅 bash 模式匹配和命令扩展文档。
这里最简单的解决方案是使用else
代替。 如果前两个条件不满足,则此块将执行,因此$inputs
不是是或否。 请参阅bash 条件文档。 您的脚本应如下所示:
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
作为最后的评论,您可以通过利用-p
参数将read
命令简化为 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
read -p 'Do you wish to Exit? (yes/no)' input
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.