Escrevi este documento aqui para obter alguns scripts no caminho ~/own_scripts/
, mas o escrevi de uma forma que causa a duplicação desse caminho:
source <<-EOF
~/own_scripts/1.sh
~/own_scripts/2.sh
# More scripts under ~/own_scripts;
EOF
Definir e depois desdefinir uma variável com o caminho é bom, mas ainda resultaria em redundância.
Qual é a melhor maneira de evitar redundância de caminho em tal source
(ou bash
) aqui-documento?
Um here-document é apenas um documento. Um script em um documento aqui é apenas um script.
Seu roteiro pode ser escrito
Ou, se todos os scripts que você gostaria de invocar forem chamados variando de 1 a, digamos, 30
n.sh
:n
Aquilo é,
Na verdade, como o documento aqui agora é bem curto, você pode se livrar do
cd
novamente:Somente
source
não lê da entrada padrão ... portanto, fornecer o documento aqui não funcionará para começar.Em vez disso, use algo como
(se
bash
é o shell com o qual você deseja executar o script).Eu usei
'END_SCRIPT'
para iniciar o here-document. As aspas impedem que o shell atual expanda as variáveis ​​dentro do documento, e a tag mais detalhada serve como documentação para o leitor.Eu usei
$HOME
em vez de ,~
pois o til não se comporta como uma variável e quanto mais detalhado$HOME
serve melhor como documentação em scripts.O script no documento aqui simplesmente usa
cd
para alterar o diretório para o$HOME/onw_script
diretório. Se isso falhar, a sessão do shell será encerrada.Nos exemplos com o
for
-loop (que vai funcionar embash
eksh
shells), gero o nome do script para executar no loop. Também testo se realmente existe um arquivo executável disponÃvel com esse nome antes de tentar executá-lo (com-x
o teste).