基本上我想运行两个shell脚本,但是我希望其中一个脚本只在另一个脚本完成后才能运行我将如何执行此操作? 我已经读了一下关于直到和我的内容,但我不太明白我将如何使用它们。我确信这很简单,但我对Linux很新。
答案 0 :(得分:4)
只需使用&&
连接器(即复合命令):
./script1.sh && ./script2.sh
但请注意,在这种情况下,只有当第一个脚本返回0退出代码(即没有错误)时才会执行第二个脚本。如果要执行序列,无论第一个脚本的结果如何,只需执行:
./script1.sh ; ./script2.sh
您可以测试两个连接器的行为:
$ true && echo aa
aa
$ false && echo aa
$ false ; echo aa
aa
答案 1 :(得分:0)
让我举个例子:
ScriptA = print msg"我是A"用户输入后睡5 秒
ScriptB = print msg"我是B"并等待用户输入
scriptC =对ScriptA和ScriptB的不同调用
ScriptA:
#!/bin/bash
read -p "I am A"
sleep 5
exit
ScriptB:
#!/bin/bash
read -p "I am B"
exit
ScriptC:
#!/bin/bash
./ScriptA
./ScriptB
exit
现在让我们运行ScriptC.sh:
[prompt] $ ./ScriptC.sh
I am A (enter)
//wait for 5
I am B (enter)
所以ScriptC在执行下一个命令之前等待每个命令完成,如果你不想等待第一个脚本,你可以在命令(./ScriptA.sh &
)之后添加(&)。在这种情况下,ScriptC将在点击" Enter"之后立即执行ScriptB。它不会等待5秒。
我希望它有所帮助