繁体   English   中英

如何添加命令以将任何值放在参数上以回显无效输入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM