我正在尝试执行以下shell脚本
#!/bin/sh
echo "start"
if [ $# != 2 || $1 != "first" || $1 != "second" ]
then
echo "Error"
fi
echo "done"
我得到以下输出: 开始 ./autobuild.sh:line 3:[:缺少`]' ./autobuild.sh:line 3:!=:找不到命令 ./autobuild.sh:line 3:!=:找不到命令 完成
我不知道如何解决错误。即使我使用-ne
代替!=
,我也会遇到相同的错误。请帮忙。
答案 0 :(得分:2)
您的语法不正确。如果您想在if语句中使用多个条件,则需要有多个[]
块。尝试:
if [ $# != 2 ] || [ $1 != "first" ] || [ $1 != "second" ]
但是,最好使用[[
(如果你的shell支持它),因为它更安全。我会去:
if [[ $# -ne 2 || $1 != "first" || $1 != "second" ]]
答案 1 :(得分:1)
虽然条件中的OR应分开如下:
#!/bin/sh
echo "start"
if [ $# != 2] || [ $1 != "first" ] || [ $1 != "second" ]
then
echo "Error"
fi
echo "done"
答案 2 :(得分:0)
尝试将-NE
替换为!=
。
答案 3 :(得分:0)
这应该有效:
#!/bin/sh
echo "start"
if [ $# -ne 2 -o $1 -ne "first" -o $1 -ne "second" ]
then
echo "Error"
fi
echo "done"