Como um script bash pode executar vários outros scripts?

0

Eu tento fazer um script bash para executar vários scripts localizados em diretórios diferentes.

Eu tentei fazer algo parecido com

#!/bin/bash  

path1="/path/to/folder1"
path2="/path/to/folder2"
command="./script"

command_line="cd $path1 -exec $command {} \; cd $path2 -exec $command {} \;"

echo $command_line
eval $command_line

exit

Mas sem sorte .. como você pode imaginar, minhas habilidades bash estão perto de .. 0

    
por campones 14.10.2013 / 21:32

1 resposta

0

2 Principais problemas com o seu script.

    O
  1. cd não aceita mais parâmetros. Então, o resto da linha após o nome do diretório será ignorado (aqui, -exec $ command ...)
  2. exec (não sei o que -exec significa aqui) executará o comando no lugar do processo pai, ou seja, seu script principal será substituído e o resto do script não será mais executado.

Cada comando deve ser assim: "cd $ pathx; $ command". Desde que você não quer ser bloqueado, você tem que executá-lo em segundo plano "(cd $ pathx; $ command) &"

Agora você quer fazer isso por 20 pastas, você pode executar um loop, algo assim:

for p in 'cat file-containing-folder-names'
do
  (cd $p; $command) &
done

Lembre-se de que 20 processos diferentes são gerados aqui. Certifique-se de que não saia do controle.

    
por 15.10.2013 / 02:30