Linux 在bash中逐个运行多个脚本
我试图一个接一个地运行三个脚本。一个要求用户输入一个文件。这些脚本都是单独运行的,当我将一些脚本与&&组合使用时,它们可以工作,但当我尝试将这三个脚本组合使用时,却失败了。他们需要彼此工作,所以应该是script1.sh->script2.sh->script3.plLinux 在bash中逐个运行多个脚本,linux,bash,shell,command-line,Linux,Bash,Shell,Command Line,我试图一个接一个地运行三个脚本。一个要求用户输入一个文件。这些脚本都是单独运行的,当我将一些脚本与&&组合使用时,它们可以工作,但当我尝试将这三个脚本组合使用时,却失败了。他们需要彼此工作,所以应该是script1.sh->script2.sh->script3.pl script1.sh需要输入2个文件 script2.sh需要输出一个.csv文件 script3.pl在创建的.csv文件上运行,需要一个我想提示用户输入的输入 每一个都需要很长时间才能运行,所以我也尝试让它们在后台使用nohu
nohup
运行。它们分别运行如下:
script1.sh file1 file2
script2.sh > file.csv
script3.pl --input answer
我试过使用以下方法
echo -n "Question? "
read answer
nohup script1.sh $1 $2 && script2.sh > file.csv && script3.pl --input $answer &
它可以处理问题script2.sh和script3.pl,但是当我使用script1.sh时,它就不起作用了。Script1.sh和script2.sh的组合也可以,但我正在尝试将这三者结合起来。尝试以下方法:
read -p "Question? " answer ; \
nohup script1.sh file1 file2 && \
nohup script2.sh > file.csv && \
nohup script3.pl --input $answer &
我认为您需要这样一个组合脚本-另存为
组合的:
#!/bin/bash
script1.sh file1 file2
script2.sh > file.csv
script3.pl --input "$1"
然后您可以运行:
nohup ./combined "answer" &
您是否尝试过将所有3行保存在一个shell脚本中,比如说combined.sh
,然后使用nohup combined.sh&
执行它?我仍然需要能够将问题输入到script3.pl中,但您似乎可以在顶部问这个问题?为什么不使用read-p“Question?”来运行它,然后回答nohup combined.sh file1 file2$answer&
?如果没有nohup
,这是否有效?这可能使事情复杂化;理想情况下,您希望通过nohup
运行整个命令链,而不仅仅是script1.sh$1$2
。另一个想法是使用&&
,当一个命令退出时会出现故障代码。请尝试使用分号(;
),我认为运行上述命令的shell本身不受SIGHUP的保护。因此,即使您在执行时注销,script1.sh
不会被SIGHUP停止,但需要运行script2.sh
和script3.sh
的shell将退出。。。因此,不要管理它们。