Bash - 如何在上一个命令完成后运行命令?

Bash - 如何在上一个命令完成后运行命令?

目前我有一个script.sh包含以下内容的文件:

#!/bin/bash
wget -q http://exemple.com/page1.php;
wget -q http://exemple.com/page2.php;
wget -q http://exemple.com/page3.php;

我想在前一个完成后逐个执行命令。我的做法正确吗?我以前从未使用过 Linux,并尝试搜索它,但没有找到解决方案。

答案1

是的,你的方法是正确的。 Shell 脚本将按顺序运行每个命令,等待第一个命令完成后再开始下一个命令。您可以将命令与以下命令连接起来;,也可以将它们放在单独的行上:

command1; command2

或者

command1
command2

;如果命令位于单独的行上,则不需要。您还可以选择仅在第一个命令成功退出时才运行第二个命令。为此,请加入他们&&

command1 && command2

或者

command1 &&
command2

有关可用的各种控制运算符的更多信息,请参见这里

答案2

在这样的重复情况下,我建议使用for循环

for P in {1..3} ; do wget -q http://exemple.com/page${P}.php ; done

这是适合命令行的单行版本,但也可以在脚本中使用。将变量嵌入到没有空格的字符串中时,需要在变量名称周围使用大括号。

该循环不仅按顺序发送请求,而且在需要时更容易调整和重用,而不必担心拼写错误。

相关内容