我正忙着制作一个能给用户一个是或否的问题的功能。但是我的脚本似乎犯了一个错误。
#!/bin/bash
read -p "Test, enter y or n: " choice
echo "$choice"
if [ "$choice"==y ]
then
echo "you choose $choice"
else
echo "you did not choose y"
fi
这似乎总是会返回You choose y|n
,尽管我希望它会返回you did not choose y
。
我一直在寻找一段时间并尝试使用双括号,无括号,引号,无引号来解决它。
答案 0 :(得分:3)
这是语法错误,您没有正确使用运算符==。 您必须在操作员周围放置空格。 好的做法:在y周围加上引号,这样你就知道它是一个字面值,并且出于兼容性原因使用=而不是==:
#!/bin/bash
read -p "Test, enter y or n: " choice
echo "$choice"
if [ "$choice" = "y" ]
then
echo "you choose $choice"
else
echo "you did not choose y"
fi
我没有找到任何令人满意的消息来源,这是我能找到的最好的:
答案 1 :(得分:0)
在==附近添加空格,它将起作用。
#!/bin/bash
read -p "Test, enter y or n: " choice
echo "$choice"
if [ "$choice" == y ]
then
echo "you choose $choice"
else
echo "you did not choose y"
fi
答案 2 :(得分:0)
您只需引用第二个字符串"y"
并在string1,运算符和string2之间添加空格。
[…]
if [ "$choice" == "y" ]
[…]
您不必将方括号加倍。