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

时间:2017-10-12 19:02:18

标签: linux bash shell

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

当您在bash中填充脚本时,$0会扩展为bash(或至少,bash的名称已启动为)。因此$(echo $0)首先扩展为$(echo bash),其计算结果为bash,然后将其标识为要运行的命令的名称,以便启动新的shell实例。您可以通过运行

来观察嵌套
echo foo; source myscript.sh; echo bar

首先,您将看到打印的字符串foo,然后您将在新shell中出现提示。输入exit将其退出,然后您会在原始命令列表最终完成时看到bar打印出来。