Что не так с оператором if в сценарии оболочки - PullRequest
1 голос
/ 10 января 2012

Вот мои утверждения:

print "Ss $# $2" >&3
if [ $# -eq 4 || $# -eq 3 ] && [ $2 != "d" ]
then
        print "sss"
else
        print "lol"
fi

Вывод:

Ss 4 s
lol

Почему не отображается "sss"?

1 Ответ

4 голосов
/ 10 января 2012

Ваше условие if синтаксически неверно.Вы не можете иметь || в скобках.Измените его на -o вместо:

if [ $# -eq 4 -o $# -eq 3 ] && [ $2 != "d" ]
then
        print "sss"
else
        print "lol"
fi

Или, что еще лучше, используйте [[ (если ваша оболочка его поддерживает), что безопаснее и имеет больше функций.Он поддерживает ||:

if [[ ( $# -eq 4 || $# -eq 3 ) && $2 != "d" ]]
then
        print "sss"
else
        print "lol"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...