Просто используйте $BAR
:
"scripts": {
"foo": "./bin/foo-script.sh $BAR",
}
Форма ${BAR}
не имеет функции цитирования, она просто отделяет имя переменной от окружающих строк (например, такие вещи, как ${HOME}foo
- $HOMEfoo
будут разверните переменную с именем «HOMEfoo»).
Обратите внимание, что в общем случае запуск сценариев в «оболочке пользователя» является плохой идеей. Система, которая запускает сценарий оболочки, должна указывать ожидаемую оболочку, например / bin / sh или fi sh
Причина, по которой ваша попытка использовать bash -c
не работает, заключается в том, что вы цитируете выкл. Вы даете fi sh команду
bash -c ./bin/foo-script.sh ${BAR}
, что означает, что fi sh пытается выполнить расширение, потому что оно не заключено в кавычки, и поэтому оно видит его как синтаксическую ошибку и отклоняет команду.
Это может сработать, если вы процитируете аргумент:
bash -c './bin/foo-script.sh ${BAR}'
, потому что тогда, к fi sh, ${BAR}
заключен в одинарные кавычки, поэтому его не волнует их.