1

У меня есть скрипт bash, который должен выполнять ряд команд. Команды работают нормально, когда вводятся в терминологию, но когда я пытаюсь выполнить их из скрипта, они не работают, поэтому я предполагаю, что это что-то специфичное для среды.

В сценарии у меня есть

exec "$cmd"

и это не работает, в то время как, если я скопирую содержимое $ cmd и вставлю в терминал, он будет работать нормально.

Как сохранить текущую среду при запуске скрипта? Или у вас есть другие идеи, что это может быть?

3 ответа3

0

Введите set -o allexport в верхней части скрипта bash. Это должно автоматически экспортировать все переменные, которые вы определяете. (Обратите внимание, что это считается плохим стилем; лучше было бы просто экспортировать правильные переменные).

0

Вместо этого поместите команду в массив.

arr=(foo bar baz quux)
exec "${arr[@]}"
-2

Если все команды должны быть запущены из одного и того же каталога, вы можете использовать

cd /d $Location

в начале скрипта, чтобы указать расположение команд для запуска.

cd - это команда изменения каталога. /d - этот ключ заставляет cd менять одновременно диск и каталог.

если вы хотите, чтобы команда запускалась, скажем, из сценариев D:\ без /d, вам нужно

D:
cd \scripts

но с помощью приведенной выше команды вы можете сделать это в одну строку

cd /d D:\scripts

-Редактировать снова-

Мои извинения, это ясно говорит BASH, но я прочитал это в BATCH по некоторым причинам. будет более осторожным в будущем.

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