我有以下bash脚本(myscript.sh):
#!/bin/bash
$(echo $0)
现在:在采购myscript.sh之前,$ SHLVL是2.在采购之后,是3.为什么? 不应该命令评估在echo之后退出吗?
谢谢!
答案 0 :(得分:0)
当您在bash
中填充脚本时,$0
会扩展为bash
(或至少,bash
的名称已启动为)。因此$(echo $0)
首先扩展为$(echo bash)
,其计算结果为bash
,然后将其标识为要运行的命令的名称,以便启动新的shell实例。您可以通过运行
echo foo; source myscript.sh; echo bar
首先,您将看到打印的字符串foo
,然后您将在新shell中出现提示。输入exit
将其退出,然后您会在原始命令列表最终完成时看到bar
打印出来。