目前我有一个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
这是适合命令行的单行版本,但也可以在脚本中使用。将变量嵌入到没有空格的字符串中时,需要在变量名称周围使用大括号。
该循环不仅按顺序发送请求,而且在需要时更容易调整和重用,而不必担心拼写错误。