gpt4 book ai didi

linux - 在 bash 脚本中评估命令导致 $SHLVL 增加

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:32 25 4
gpt4 key购买 nike

我有以下 bash 脚本 (myscript.sh):

#!/bin/bash
$(echo $0)

现在:在采购 myscript.sh 之前,$SHLVL 是 2。采购之后,是 3。为什么?命令评估不应该在 echo 之后退出吗?

谢谢!

最佳答案

当您在 bash 中获取脚本时,$0 扩展为 bash(或者至少是 shell bash 的名称 开始于)。所以 $(echo $0) 首先扩展为 $(echo bash),其计算结果为 bash,然后将其标识为命令运行,因此启动了一个新的 shell 实例。您可以通过运行观察嵌套

echo foo; source myscript.sh; echo bar

首先您会看到字符串 foo 被打印出来,然后您会在新的 shell 中看到一个提示符。输入 exit 退出它,然后您将看到 bar 打印出来,因为您的原始命令列表终于完成了。

关于linux - 在 bash 脚本中评估命令导致 $SHLVL 增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46717086/

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