首页 > 解决方案 > 在终端中运行重复的命令

问题描述

我对运行 shell 命令有点陌生。目前我在终端中一次执行这些,如下所示:

python dna.py databases/small.csv sequences/1.txt
// result

python dna.py databases/small.csv sequences/2.txt
// result

python dna.py databases/small.csv sequences/3.txt
// result

etc...

有没有办法将所有这些命令放在一个文本文件中并运行一个命令来一次执行它们?最后,我想将它传送到 results.txt 文件中。

标签: pythonbashshellcommand-lineterminal

解决方案


您可以迭代在 shell 上生成的序列seq

repeat=10
for n in $(seq 1 $repeat);  do python dna.py databases/small.csv sequences/${n}.txt; done

根据 Jetchisel 的建议,您可以支持扩展,这是 2009 年添加的 bash4 功能。

python dna.py databases/small.csv sequences/{1..3}.txt >> results.txt

使用 bash c 风格的 for 循环

start=1 end=3
for ((n=start;n<=end;n++)); do python dna.py database/small.csv sequences/"$n".txt

这将阻塞您的终端,直到您的进程完成,并且将被视为没有用户交互的前台进程。这里的重点是进程是否会阻止其他进程的执行直到它终止。

您可以通过&在命令行末尾添加来将前台进程变为后台进程。


推荐阅读