-2

不知道返回值是什么意思

grep abc Letters


echo $?
0
echo $0

给出“-bash” “-bash”返回值是什么意思

4

3 回答 3

1

的含义$0在 Bash 手册中进行了解释(此处,靠近页面底部):

扩展为 shell 或 shell 脚本的名称。这是在 shell 初始化时设置的。如果使用命令文件调用 Bash(请参阅Shell 脚本),则 $0 设置为该文件的名称。如果 Bash 使用 -c 选项启动(请参阅Invoking Bash),则$0设置为要执行的字符串之后的第一个参数(如果存在)。否则,它被设置为用于调用 Bash 的文件名,由参数 0 给出。

(不幸的是,在 bash 手册中很难搜索$0,因为它被列为0.)

按照惯例,如果当前bash进程是一个登录 shell,$0argv[0]用 C 术语来说)被修改,无论是由bash它自己还是由登录进程,-在开头添加一个字符。

在某些系统上,/bin/sh是指向/bin/bash. 如果是这样,并且如果bash通过/bin/sh符号链接调用,那么$0将是shor -sh

$?,也在 Bash 手册“扩展到最近执行的前台管道的退出状态”中进行了说明。更简单地说,它是最近执行的命令(在您的情况下grep abc Letters01

于 2013-10-06T21:36:18.673 回答
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
于 2013-10-06T17:25:24.907 回答
0

最新的 shell 命令的返回状态表示为$?

date
echo $?
0

这里 0 表示从先前完成的 command( date) 成功返回,任何非零值表示失败状态。

当您访问时$0,实际上是 shell 中可执行文件的名称,在您的情况下,它是-bash因为您在 shell 上运行它。

于 2013-10-06T17:23:53.253 回答