@ymfront

Что означает ошибка, выводящаяся при выполнении bash-скрипта?

При выполнении bash-скрипта:

if [ "$projectDir" == "video" && "$flag" != "noflag" ]; then
      cp -r $flagsDir/ $buildedDir/$lpDir/$locale/$lpDir/
fi


выводится ошибка - [: missing `]'

Что значит эта ошибка, и как ее можно исправить?
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
выводится ошибка - [: missing `]'
Что значит эта ошибка

Эта ошибка означает, что
1) bash разбил команду
if [ "$projectDir" == "video" && "$flag" != "noflag" ]; then
следующим образом: ключевое слово if, команда [ с аргументами "$projectDir" == "video", оператор &&, команда "$flag" с аргументами != "noflag" ], разделитель ;, оператор then.
2) первая команда [ (она же test), очевидно, не нашла в своих аргументах закрывающей скобки ], которая должна там быть при таком её вызове.

как ее можно исправить?

использовать -a вместо &&, как говорит man test.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Внутри оператора [] нельзя использовать &&, потому что это не синтаксис [] а синтаксис внешнего баш.
Правильно так
[ "$projectDir" == "video" -a "$flag" != "noflag" ]

или
[ "$projectDir" == "video" ] && [ "$flag" != "noflag" ]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы