不知道返回值是什么意思
grep abc Letters
echo $?
0
echo $0
给出“-bash” “-bash”返回值是什么意思
的含义$0
在 Bash 手册中进行了解释(此处,靠近页面底部):
扩展为 shell 或 shell 脚本的名称。这是在 shell 初始化时设置的。如果使用命令文件调用 Bash(请参阅Shell 脚本),则 $0 设置为该文件的名称。如果 Bash 使用 -c 选项启动(请参阅Invoking Bash),则
$0
设置为要执行的字符串之后的第一个参数(如果存在)。否则,它被设置为用于调用 Bash 的文件名,由参数 0 给出。
(不幸的是,在 bash 手册中很难搜索$0
,因为它被列为0
.)
按照惯例,如果当前bash
进程是一个登录 shell,$0
(argv[0]
用 C 术语来说)被修改,无论是由bash
它自己还是由登录进程,-
在开头添加一个字符。
在某些系统上,/bin/sh
是指向/bin/bash
. 如果是这样,并且如果bash
通过/bin/sh
符号链接调用,那么$0
将是sh
or -sh
。
$?
,也在 Bash 手册“扩展到最近执行的前台管道的退出状态”中进行了说明。更简单地说,它是最近执行的命令(在您的情况下grep abc Letters
为0
1
该问题应移至https://unix.stackexchange.com/。
但无论如何,$0
是保存正在执行命令的应用程序名称的变量的值。就像argv[0]
在 C 中一样。
例子:
cdshines@v3700:~|⇒ echo $0 # I'm in zsh now
/bin/zsh
cdshines@v3700:~|⇒ bash # let's run bash:
cdshines@v3700:~$ echo $0
bash
cdshines@v3700:~$ sh # we need to go deeper:
$ echo $0
sh
$ zsh # deeper!
cdshines@v3700:~|⇒ echo $0
zsh
cdshines@v3700:~|⇒ # hit Ctrl-D (pop one level):
$ echo $0
sh
$ # pop again:
cdshines@v3700:~$ echo $0
bash
cdshines@v3700:~$ exit # again:
cdshines@v3700:~|⇒ echo $0
/bin/zsh # we're at the starting point now
最新的 shell 命令的返回状态表示为$?
:
date
echo $?
0
这里 0 表示从先前完成的 command( date
) 成功返回,任何非零值表示失败状态。
当您访问时$0
,实际上是 shell 中可执行文件的名称,在您的情况下,它是-bash
因为您在 shell 上运行它。