以下while循环旨在不断询问用户输入,直到输入指定的“break”字符。但是,出于某种原因,无论输入什么文本,都会触发此IF语句。
while true; do
#Prompt user for Input
printf "Please insert value. Insert the letter 'D' when you are done\n";
#Read User Input
read User_Input;
echo "DEBUG: Input is: $User_Input";
#Check User Input for Break Command
if [ "$User_Input"=="D" ]; then
break
fi
done
在脚本中,我将用户输入变量声明为User_Input="";
据我所知,if语句是正确的,并且脚本在运行时没有抛出任何错误。
答案 0 :(得分:3)
if [ "$User_Input"=="D" ]; then
DEBUG: Input is: a
+ '[' a==D ']'
+ break
应该写成
if [ "$User_Input" == "D" ]; then
DEBUG: Input is: e
+ '[' e == D ']'
+ true
+ printf 'Please insert value. Insert the letter '\''D'\'' when you are done\n'
Please insert value. Insert the letter 'D' when you are done
+ read User_Input
D
+ echo 'DEBUG: Input is: D'
DEBUG: Input is: D
+ '[' D == D ']'
+ break
==
答案 1 :(得分:2)
这
if [ "$User_Input"=="D" ]; then
要
# space
if [ "$User_Input" == "D" ]; then
因为它调用[带4
个参数的命令。
正如bash builtins的手册页所述:“每个运算符和操作数 必须是一个单独的论点。“