Unix返回值“-bash”

时间:2013-10-06 17:21:08

标签: bash unix

我不知道返回值是什么意思

grep abc Letters


echo $?
0
echo $0

给出“-bash” 什么“-bash”返回值意味着

3 个答案:

答案 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上运行它。