我不知道返回值是什么意思
grep abc Letters
echo $?
0
echo $0
给出“-bash” 什么“-bash”返回值意味着
答案 0 :(得分:1)
问题应移至https://unix.stackexchange.com/。
但无论如何,$0
是变量的值,它保存正在执行命令的应用程序的名称。这就像C中的argv[0]
示例:
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
答案 1 :(得分:1)
$0
的含义在Bash手册(页面底部附近的here)中进行了解释:
扩展为shell或shell脚本的名称。这是在shell设置的 初始化。如果使用命令文件调用Bash(请参阅Shell Scripts),则将$ 0设置为该文件的名称。如果Bash开始使用 -c选项(请参阅Invoking Bash),然后将
$0
设置为第一个 要执行的字符串之后的参数,如果存在的话。 否则,它被设置为用于调用Bash的文件名,如下所示 参数零。
(不幸的是,在bash手册中搜索$0
很困难,因为它只列为0
。)
按照惯例,如果当前bash
进程是登录shell,则$0
本身或登录时会修改argv[0]
(C语言中的bash
)过程,在开头添加-
字符。
在某些系统上,/bin/sh
是/bin/bash
的符号链接。如果是,并且通过bash
符号链接调用了/bin/sh
,则$0
将为sh
或-sh
。
$?
,也在Bash手册中解释,“扩展到最近执行的前台管道的退出状态”。更简单地说,它是最近执行的命令的状态(在您的情况下,grep abc Letters
),如果该命令成功,通常为0
,或者某些非零值(通常但不总是1
{{ 1}})如果失败了。
答案 2 :(得分:0)
最新shell命令的返回状态由$?
表示:
date
echo $?
0
此处0表示从先前完成的命令(date
)成功返回,任何非零值表示失败状态。
访问$0
时,实际上是shell中可执行文件的名称,在您的情况下,它是-bash
,因为您在shell上运行它。