加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 当我在Bash脚本中使用`\u0026`函数时会发生什么?

发布时间:2020-12-14 01:12:24 所属栏目:Linux 来源:网络整理
导读:我正在用 shell脚本调试一个奇怪的东西,想知道我是否误解了 Bash的“fork”()是如何工作的,也许是因为我通常在单个命令中通过终端使用它,例如: [~me]$someExecutable 现在,在shell脚本中: foo() { echo "logic"}bar() { echo "idic"}baz() { echo "katra"}
我正在用 shell脚本调试一个奇怪的东西,想知道我是否误解了 Bash的“fork”(&)是如何工作的,也许是因为我通常在单个命令中通过终端使用它,例如:

[~me]$someExecutable &

现在,在shell脚本中:

foo() {
   echo "logic"
}

bar() {
   echo "idic"
}

baz() {
   echo "katra"
}

foo &
bar
baz

我的目的是异步调用函数foo,然后让脚本的其余部分继续在原始进程上下文中执行.

当我执行这个示例脚本时,我得到了预期的输出:

logic
idic
katra

(也就是说,只有一个明显的调用bar和baz;我完全没有被三行输出的相对顺序所困扰,我理解这可能会有所不同)

但我可能误解了输出和脚本本身.如果是这样,那肯定会解释我在实际代码中看到的奇怪之处,并且让我不必再深入挖掘.

是否有可能在子进程中调用foo之后,forked shell脚本会继续吗?这意味着我的shell脚本的其余部分将被执行两次?

当我使用&像这样在Bash脚本中?

解决方法

&符号仅在您的示例中分配对foo()的调用.它不是分支整个脚本.只有foo()在一个单独的线程中运行,当foo()结束时它会退出. bar()和baz()继续在同一个线程中运行

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读