mun*_*ish 3 scheduling shell-script
我对 unix 脚本的执行模式有疑问。
例如包含行的脚本:
command B
function C()
{
Myscript // Myscript is a script
command D
}
command E
Run Code Online (Sandbox Code Playgroud)
并假设如果Myscript执行需要很长时间(比如 5 分钟),那么下一个命令 ( command D) 将执行或等待Myscript完成。
Ale*_*ios 16
对于您的特定脚本,既Myscript不会command D也不会执行。你已经定义了一个函数C,但你没有调用它。
执行顺序为:
command B 运行到完成。command E 运行到完成。如果您调用C,它将运行Myscript到完成,然后运行command D到完成。
您在 shell 脚本中调用的所有内容都按照它所看到的顺序运行,并一直运行到完成。如果您需要与其他东西并行运行,您应该使用作业控制(查看与号字符如何&用于将作业置于后台)。一个简单的例子:
A
B
Run Code Online (Sandbox Code Playgroud)
运行A直到完成,然后运行B直到完成。脚本完成。
A &
B
Run Code Online (Sandbox Code Playgroud)
运行A在后台,然后在前台运行B中。shell 脚本在B完成时结束。A可能仍在运行。
A &
B &
Run Code Online (Sandbox Code Playgroud)
A在后台运行,然后(无需等待A完成),B在后台运行。脚本立即结束。
A &
B &
wait
Run Code Online (Sandbox Code Playgroud)
A在后台运行,然后(无需等待A完成),B在后台运行。然后脚本在退出之前等待A和B完成。