Um documento aqui é apenas um documento. Um script em um documento aqui é apenas um script.
Seu script pode ser escrito
cd "$HOME/own_scripts" || exit 1
./1.sh
./2.sh
Ou, se todos os scripts que você deseja invocar forem chamados de n.sh
com n
, variando de 1 a, digamos, 30:
cd "$HOME/own_scripts" || exit 1
for (( i = 1; i <= 30; ++i )); do
[ -x "${i}.sh" ] && ./${i}.sh
done
Isto é,
source <<-'END_SCRIPT'
cd "$HOME/own_scripts" || exit 1
for (( i = 1; i <= 30; ++i )); do
[ -x "${i}.sh" ] && ./${i}.sh
done
END_SCRIPT
Na verdade, como o documento here agora é bem curto, você pode se livrar do cd
novamente:
source <<-'END_SCRIPT'
for (( i = 1; i <= 30; ++i )); do
[ -x "$HOME/own_scripts/${i}.sh" ] && "$HOME/own_scripts/${i}.sh"
done
END_SCRIPT
Apenas, source
não lê a entrada padrão ... então, pesquisar o documento aqui não funcionará para começar.
Em vez disso, use algo como
bash <<-'END_SCRIPT'
...as above...
END_SCRIPT
(se bash
for o shell com o qual você deseja executar o script).
-
Eu usei
'END_SCRIPT'
para iniciar o documento here. A cotação impede que o shell atual expanda variáveis dentro do documento, e a tag mais detalhada serve como documentação para o leitor. -
Eu usei
$HOME
em vez de~
desde que til não se comportam como uma variável e a mais detalhada$HOME
serve melhor como documentação em scripts. -
O script no documento here simplesmente usa
cd
para alterar o diretório para o diretório$HOME/onw_script
. Se isso falhar, a sessão do shell será encerrada. -
Nos exemplos com o
for
-loop (que funcionará embash
eksh
shells), eu gero o nome do script para executar no loop. Eu também testo se há realmente um arquivo executável disponível com esse nome antes de tentar executá-lo (com th-x
test).