Bash脚本从一个文件执行命令,但如果取消,则跳到下一个文件

Bash脚本从一个文件执行命令,但如果取消,则跳到下一个文件,bash,Bash,Im尝试创建一个脚本以从文件执行一组命令 例如,这个文件有一组3个命令perlscript-a、perlscript-b、perlscript-c,每个命令都在一个新行上,我制作了这个脚本 #!/bin/bash for command in `cat file.txt` do echo $command perl $command done 问题是有些脚本被卡住了,或者需要很长时间才能完成,我希望看到它们的输出。如果我对当前执行的命令发送CTRL+C以跳转到txt文件中的下一个

Im尝试创建一个脚本以从文件执行一组命令

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

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

done
问题是有些脚本被卡住了,或者需要很长时间才能完成,我希望看到它们的输出。如果我对当前执行的命令发送CTRL+C以跳转到txt文件中的下一个命令而不取消wole bash脚本,则可以生成bash脚本


谢谢

您可以使用
陷阱“continue”SIGINT
忽略Ctrl+c

#/bin/bash
#在Ctrl+c(SIGINT)上忽略并继续
陷阱“继续”信号
whileread命令
做
回显“$command”
perl“$command”
完成

您也不需要调用
cat
来读取文件内容。

您可以使用
陷阱“continue”SIGINT
忽略Ctrl+c

#!/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
#/bin/bash
#在Ctrl+c(SIGINT)上忽略并继续
陷阱“继续”信号
whileread命令
做
回显“$command”
perl“$command”
完成
此外,您不需要调用
cat
来读取文件内容

#!/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
终止每个命令


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

这将对每个进程进行后台处理,而不是“转发”一个中断。但是,它确实排除了使用Control-C中止卡住的脚本以允许下一个脚本继续的必要性。这将对每个进程进行后台处理,而不是“转发”一个中断。但是,排除使用Control-C中止卡住的脚本以允许下一个脚本继续的必要性。当按下Ctrl+C时,这不会跳转到文件中的下一个命令。@dogbane:说得好,谢谢你指出这一点。我做了更正。你答案的第一行是“SIGNINT”而不是“SIGINT”-我试图编辑它,但我必须更改至少6个字符,所以我无法更改。当按下Ctrl+C时,这不会跳转到文件中的下一个命令。@dogbane:很好,谢谢你指出它。我做了一个更正。你答案的第一行是“signit”而不是“SIGINT”-我试图编辑它,但我必须更改至少6个字符,所以我不能。