目前我有一个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;
Run Code Online (Sandbox Code Playgroud)
我想一个一个执行命令,当前一个完成时。我是否以正确的方式做这件事?我以前从未使用过 Linux 并试图搜索它,但没有找到解决方案。
ter*_*don 192
是的,你做对了。Shell 脚本将按顺序运行每个命令,在下一个开始之前等待第一个命令完成。您可以将命令加入;或将它们放在单独的行上:
command1; command2
Run Code Online (Sandbox Code Playgroud)
或者
command1
command2
Run Code Online (Sandbox Code Playgroud)
;如果命令在单独的行上,则不需要。您也可以选择仅当第一个命令成功退出时才运行第二个命令。为此,请加入他们&&:
command1 && command2
Run Code Online (Sandbox Code Playgroud)
或者
command1 &&
command2
Run Code Online (Sandbox Code Playgroud)
有关可供您使用的各种控制运算符的更多信息,请参见此处。
小智 20
在像这样的重复情况下,我建议使用for 循环。
for P in {1..3} ; do wget -q http://exemple.com/page${P}.php ; done
Run Code Online (Sandbox Code Playgroud)
这是适用于命令行的单行版本,但也可以在脚本中使用。将变量嵌入到没有空格的字符串中时,需要在变量名周围使用大括号。
循环不仅按顺序发送请求,而且在需要时更容易调整和重用,而不必担心打字错误。