我有几个 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}
,它会将命令堆叠在队列中,然后后台处理程序会在后台处理该命令。