gpt4 book ai didi

bash - 为什么 shell 命令没有按我预期的顺序执行?

转载 作者:行者123 更新时间:2023-12-04 18:54:57 25 4
gpt4 key购买 nike

我编写了 3 个名为 s1.sh s2.sh s3.sh 的 shell 脚本。它们具有相同的内容:

#!/bin/ksh
echo $0 $$

和 s.sh 按顺序调用它们:
#!/bin/sh
echo $0 $$
exec ./s1.sh &
exec ./s2.sh &
exec ./s3.sh &

但结果是困惑:
victor@ThinkPad-Edge:~$ ./s.sh
./s.sh 3524
victor@ThinkPad-Edge:~$ ./s1.sh 3525
./s3.sh 3527
./s2.sh 3526

为什么不按顺序 s1 s2 然后 s3 呢?

如果我在 s.sh 中删除 &:
#!/bin/sh
echo $0 $$
exec ./s1.sh
exec ./s2.sh
exec ./s3.sh

输出:
$ ./s.sh
./s.sh 4022
./s1.sh 4022

缺少 s2 和 s3,为什么?

最佳答案

它们一直按顺序执行(至少按顺序开始 - 请注意 id 正在递增)。您为 3 个单独的程序打开 3 个单独的线程。一个(出于某种原因)比另一个快。如果您希望它们按顺序排列,请使用 exec s 和 &来自 exec ./s1.sh & .

关于bash - 为什么 shell 命令没有按我预期的顺序执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25588214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com