我面临以下问题我已经创建了上述条件,但是当我选择y表示一切正常时,但是当我选择n表示不是时,我会得到恼人的错误输出: 输出: 你同意是(是)否(n) ñ ./myscript:[n:命令未找到
myscript是我脚本的名称 代码在这里:
echo "Do you agree yes (y) or not (n)"
read answer
if ( [ "$answer" = 'y' ] || ["$answer" = 'Y' ]);
then
echo -e “ output for y”
done
else
echo -e " output for n "
exit 1;
知道如何摆脱输出并解决问题? 感谢
答案 0 :(得分:6)
你错过了这个空间:
["$answer" = 'Y' ]
更改为:
[ "$answer" = 'Y' ]
脚本中还有其他错误。这里有工作代码:
echo "Do you agree yes (y) or not (n)"
read answer
if ( [[ "$answer" = 'y' ]] || [[ "$answer" = 'Y' ]]);
then
echo -e " output for y"
else
echo -e " output for n"
exit 1
fi
答案 1 :(得分:5)
在第二个条件[
之后,你错过了一个空格。 [
实际上是一个命令,因为它一起尝试运行[n
。您没有看到y
的输出,因为评估是短路的(即第一个条件为真,因此无需评估第二个条件)。
答案 2 :(得分:1)
那不是bash。 “完成”不会终止bash中的“if”条件。你应该删除“done”并在else body的末尾添加“fi”。
此外,不需要在“退出1”之后使用分号。
答案 3 :(得分:0)
完成应该在else子句之后,即在退出之前。并且“fi”没有“完成”。