如何在 Linux 中一次运行一系列 bash 脚本?

如何在 Linux 中一次运行一系列 bash 脚本?

我有几个 bash 脚本,或者更确切地说是一个需要多次运行的脚本。

此脚本接受多个命令行参数并对其执行某些操作。我需要按顺序多次运行此脚本,并传递不同的参数值。问题是此脚本很长,运行需要很长时间。

我想运行此脚本一次,并传入一些参数。然后我想立即再次运行此脚本,这次传入不同的参数值。

我需要在早上将完成的结果交给老板。一个解决方案是只运行一次脚本,然后整晚坐在电脑前,等待它完成,然后再次运行脚本。但睡眠不足对我来说不是一个选择。

有没有办法自动运行具有预定参数值的脚本?顺便说一句,我不仅需要查看脚本的输出作为最终结果,还需要查看使用适当参数传递到命令行的脚本。

也许看一下这张图片可以更好地理解我的问题。

截屏

答案1

运行一个接一个命令的最简单方法就是使用 ; 例如:

command1 --options;command2 --options;command3 --options

如果您希望在前一个命令失败时跳过正在运行的命令,则可以使用 && 来实现:

 command1 --options && command2 --options && command3 --options

与管道符 (|) 或与号 (&) 不同,分号会等待上一个命令完成后再运行下一个命令。

答案2

你需要一个for循环:

cd ~/Desktop/344/08
for arg in --resources --requesters --errors
do
    echo Starting: ./log_parse.sh "$arg" --day 10-20 --number 10 access_log_Jul95
    ./log_parse.sh "$arg" --day 10-20 --number 10 access_log_Jul95
done

也许您希望将输出的副本保存到日志文件并将其显示在屏幕上:

cd ~/Desktop/344/08
{
    for arg in --resources --requesters --errors
    do
        echo Starting: ./log_parse.sh "$arg" --day 10-20 --number 10 access_log_Jul95
        ./log_parse.sh "$arg" --day 10-20 --number 10 access_log_Jul95
    done
} 2>&1 | tee output.log

将上述代码放入一个名为的文件中。script.sh然后在命令提示符下运行:

bash ./script.sh

答案3

查看任务后台处理程序 (http://vicerveza.homeunix.net/~viric/soft/ts/) — 有适用于 Debian 的软件包。

基本上,您可以安装它,然后执行一堆命令tsc {script} {arguments},它会将命令堆叠在队列中,然后后台处理程序会在后台处理该命令。

相关内容