我是bash脚本的新手,下面的脚本部分没有任何输出。
check=""
while [ "$check"=="" ]
do
read -p "Signature Correct?(Yes/No): " check
if [ "$check" != "Y" || "$check" != "y" || "$check" != "Yes" || "$check" != "yes" || "$check" != "N" || "$check" != "n" || "$check" != "No" || "$check" != "no" ];
then
check=""
elif ["$check" == "Y" || "$check" == "y" || "$check" == "Yes" || "$check" == "yes" ];
then
echo "Signature Accepted!"
elif [ "$check" != "N" || "$check" != "n" || "$check" != "No" || "$check" != "no" ];
then
check=""
fi
done
我没有收到任何错误消息。有什么帮助吗?如果您有一个更聪明或更短的解决方案,我将不胜感激能从中受益。
谢谢!
建议:
#!/bin/bash
while true; do
read -p 'Is signature correct? y/[n]: '
[[ $REPLY == [Yy]* ]] && break
echo 'Ok, asking again...'
done
echo 'Signature accepted'
这实现了一个无限循环,用户可以通过输入以y
或开头的字符串来突破无限循环,Y
并且默认将输入解释为“否”。
如果您需要检查Y
,y
,Yes
和yes
(即,对待像字符串yup
为“无”),然后使用
case $REPLY in ([Yy]|[Yy]es) break; esac
而不是[[ ... ]]
测试和break
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句