Я пишу bash-скрипт, который я тестирую на OS X, хотя в конечном итоге он будет работать в стандартной среде Linux и столкнется со странной ошибкой.

У меня есть такие тесты в моем сценарии:

if [ ! -w $BP ]; then
  echo "'$1' not writable"
  exit 1
fi

Что мне кажется довольно вменяемым и прекрасно работает под Linux, но при попытке тестирования на OS X я получаю следующее сообщение об ошибке:

startSvr.sh: строка 135: [: отсутствует `] 'startSvr.sh: строка 135: -w: команда не найдена

Так это тот случай, когда OS X не поддерживает тест -w или есть какая-то другая причина, по которой это не работает для меня? например, среда

1 ответ1

1

Возможно, у вас нет пробела после имени файла, то есть строка на самом деле

if [ ! -w $BP]; then

потому что это приведет к ошибке, которую вы видите.


Обновляется после того, как OP указывает, что имя каталога может включать пробелы

Предложите изменить код на

if [ ! -w "$BP" ]; then

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .