“回声 $0”是如何工作的?

Sun*_* FE 3 linux unix bash macos

我在Ask Ubuntu上发现我可以使用这个命令来找出我所在的 shell。

echo $0
Run Code Online (Sandbox Code Playgroud)

我喜欢这个,因为与Unix 和 Linux Stack Exchange上的更复杂的解决方案相比,它很简单。

我想echo类似于打印,但什么是$0

最终,我希望能够以编程方式打开多个选项卡,类似于在Stack Overlow上看到的。

那使用gnome-terminal但我正在使用 Bash。

Gia*_*968 8

$0 是 Bash 中的一个特殊参数……

...以及其他符合 POSIX 标准的 shell

正如对您链接到的那个答案的评论中所解释的那样,echo $0只向您显示当前正在运行的进程的名称:

$0 是正在运行的进程的名称。如果您在 shell 中使用它,那么它将返回 shell 的名称。如果您在脚本中使用它,它将是脚本的名称。

可以在此其他站点上找到更多详细信息:

$0 是Bash 特殊参数之一。它只能被引用如下(只是一个例子,因为在编写脚本时有多种引用和使用 $0 的方法)。

所以只需创建一个像这样的 Bash 脚本。首先打开一个test.sh用 Nano调用的写入文件,如下所示:

nano test.sh
Run Code Online (Sandbox Code Playgroud)

然后将这些内容放入该文件中:

#!/bin/bash
echo $0
Run Code Online (Sandbox Code Playgroud)

然后点击Ctrl+ X,保存文件。现在使脚本可执行,如下所示:

chmod 700 test.sh 
Run Code Online (Sandbox Code Playgroud)

现在像这样运行它:

./test.sh
Run Code Online (Sandbox Code Playgroud)

输出将是:

./test.sh
Run Code Online (Sandbox Code Playgroud)

因此,对于您所描述的目的,echo $0将不会真正起作用。