Comando bash de enfileiramento em um arquivo

1

Eu gostaria de enfileirar alguns scripts bash em um arquivo que eu possa modificar. Para que eu lance o arquivo "lauchscripts.py" ou "lauchscripts.sh", que contém os comandos para iniciar os scripts:

1:> source folder1/script1.sh 
2:> source folder2/script2.sh
3:> source folder3/script3.sh 
4:>

Para que: 1) quando eu lanço isso, ele inicia o script1.sh e, quando termina, lança o script2.sh e assim por diante. 2) a qualquer momento durante a execução, posso adicionar linhas ao meu arquivo "lauchscripts" que será executado posteriormente. Digamos que, ao executar script3.sh (linha 3), se eu adicionar na linha 4 um comando:

1:> source folder1/script1.sh 
2:> source folder2/script2.sh
3:> source folder3/script3.sh 
4:> source folder4/script4.sh

Esta linha irá executar script4.sh depois de terminar script3.sh

Isso é possível?

Obrigado

    
por nikarko01 30.05.2018 / 09:41

1 resposta

0

Se o seu arquivo contiver os nomes dos próprios scripts, em vez de usar o código, você poderá fazer isso com facilidade e segurança:

while read -r -u 9
do
    . "$REPLY"
done 9< scripts.txt

Como acontece com a maioria dos hacks de script, há muitas ressalvas para isso (e ainda mais se você tiver read código e eval it):

  1. Se o descritor de arquivo 9 ( -u 9 ) for usado para qualquer coisa em qualquer um dos scripts, todas as apostas estarão desativadas.
  2. Se qualquer um dos scripts definir quaisquer variáveis, esse contexto não será eliminado.
  3. Quando a última linha de scripts.txt for lida, o loop termina.

Uma solução melhor seria executar os scripts que você lê, simplesmente removendo o ponto. Para que isso funcione, os caminhos de script precisam conter pelo menos uma barra, ou os scripts precisam estar no seu PATH .

    
por 30.05.2018 / 09:57

Tags