有人能告诉我为什么这个脚本不起作用吗?我得到了
./FileDirTest.sh: line 10: [: missing `]'
./FileDirTest.sh: line 10: n: command not found
./FileDirTest.sh: line 13: [: missing `]'
./FileDirTest.sh: line 13: n: command not found
这是我的脚本。
if [ -d "$PASSED1" ]
then echo "Do you want to execute whole directory?(Y/N)"
read answer
if [ "$answer" == "y" || "$answer" == "Y" ] ;
then echo "Execute"
fi
if [ "$answer" == "n" || "$answer" == "N" ] ;
then echo "No"
exit 1
fi
fi
我确定这很简单。我对这一切都不熟悉。
答案 0 :(得分:3)
||
不是[
命令的有效运算符;你只能用它来加入两个不同的[
命令:
if [ "$answer" = "y" ] || [ "$answer" = "Y" ];
但是,您可以在||
的条件命令中使用bash
:
if [[ "$answer" = "y" || "$answer" = "Y" ]];
发生这两个错误中的第一个是因为||
是一个特殊的shell运算符,表示上一个命令已完成,但[
需要]
作为最终参数。发生第二个错误是因为紧跟在$answer
之后的||
的值被视为要运行的命令的名称。
答案 1 :(得分:1)
除了@ Chepner的回答,您还可以使用bash -o
运算符,
if [ "$answer" == "y" -o "$answer" == "Y" ]; then
echo "Execute"
else
echo "No"
exit 1
fi