
Eu tenho um script bash que deve executar vários comandos. Os comandos funcionam bem quando inseridos em um terminal, mas quando tento executá-los de dentro do script eles não funcionam, então presumo que seja algo específico do ambiente.
No roteiro eu tenho
exec "$cmd"
e não funciona, mas se eu copiar o conteúdo de $ cmd e colar em um terminal, ele funciona bem.
Como mantenho o ambiente atual ao executar o script? Ou você tem alguma outra ideia do que possa ser?
Responder1
Coloque o comando em uma matriz.
arr=(foo bar baz quux)
exec "${arr[@]}"
Responder2
Digite set -o allexport
no topo do seu script bash. Isso deve exportar automaticamente todas as variáveis que você definir. (Observe que isso é considerado um estilo ruim; seria melhor exportar apenas as variáveis adequadas).
Responder3
Se todo o comando for executado no mesmo diretório, você pode usar
cd /d $Location
no início do script para definir o local onde os comandos serão executados.
cd – Este é o comando de mudança de diretório. /d - Essa opção faz com que o cd altere a unidade e o diretório ao mesmo tempo.
se você quisesse que o comando fosse executado, digamos, D:\scripts sem o /d você precisaria
D:
cd \scripts
mas com o comando acima você pode fazer isso em uma linha
cd /d D:\scripts
-Editar novamente-
Peço desculpas, diz claramente BASH, mas li em BATCH por algum motivo. será mais cuidadoso no futuro.