Sto cercando di creare uno script per eseguire una serie di comandi da un file
il file per esempio ha un set di 3 comandi perl script-a, perl script-b, perl script-c, ogni comando su una nuova riga e ho fatto questo script
#!/bin/bash
for command in `cat file.txt`
do
echo $command
perl $command
done
Il problema è che alcuni script rimangono bloccati oci vuole troppo tempo per finire e voglio vedere le loro uscite. È possibile creare lo script bash nel caso in cui invio CTRL + C sul comando corrente che viene eseguito per passare al comando successivo nel file txt per non cancellare lo script di bash wole.
Grazie
risposte:
4 per risposta № 1Puoi usare trap "continue" SIGINT
ignorare Ctrl + c:
#!/bin/bash
# ignore & continue on Ctrl+c (SIGINT)
trap "continue" SIGINT
while read command
do
echo "$command"
perl "$command"
done < file.txt
# Enable Ctrl+c
trap SIGINT
Inoltre non hai bisogno di chiamare cat
leggere il contenuto di un file.
0 per risposta № 2
#!/bin/bash
for scr in $(cat file.txt)
do
echo $scr
# Only if you have a few lines in your file.txt,
# Then, execute the perl command in the background
# Save the output.
# From your question it seems each of these scripts are independent
perl $scr &> $scr_perl_execution.out &
done
È possibile controllare ciascun output per vedere se il comando sta facendo come previsto. Se no, puoi usare kill
per terminare ciascun comando.