2

我想制作一个脚本来执行文件中的一组命令

例如,该文件有一组 3 个命令 perl script-a、perl script-b、perl script-c,每个命令都在一个新行上,我制作了这个脚本

#!/bin/bash
for command in `cat file.txt`
do
   echo $command
   perl $command

done

问题是某些脚本卡住或需要很长时间才能完成,我想查看它们的输出。如果我在执行的当前命令上发送 CTRL+C 以跳转到 txt 文件中的下一个命令而不是取消 wole bash 脚本,则可以制作 bash 脚本。

谢谢

4

2 回答 2

4

您可以使用trap 'continue' SIGINT忽略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

此外,您无需调用cat即可读取文件的内容。

于 2013-09-16T16:46:51.207 回答
0
#!/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

您可以检查每个输出以查看命令是否按预期执行。如果没有,您可以使用kill终止每个命令。

于 2013-09-16T16:50:48.237 回答