shell中 $? $# $* $$ $* $@ $0 特殊变量含义

shell中有一些常用的难记的特殊变量,如下:

$0当前脚本的文件名
$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#传递给脚本或函数的参数个数。
$*传递给脚本或函数的所有参数。
$@传递给脚本或函数的所有参数。被双引号(” “)包含时,与 $* 稍有不同
$?上个命令的退出状态,或函数的返回值。
$$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

$0 – 当前脚本文件名

#! /bin/bash
echo $0

$ sh shell.sh 
shell.sh

$n – 第n个参数

#! /bin/bash
echo $1
echo $2
echo $3

$ sh shell.sh a b c
a
b
c

$# – 参数个数

#! /bin/bash
echo $#

$ sh shell.sh a b c
3

$* – 所有参数

#! /bin/bash
echo $*
for i in $*; do
    echo $i
done

$ sh shell.sh a b c
a b c
a
b
c

$@ – 所有参数

#! /bin/bash
echo $*
for i in $*; do
    echo $i
done

$ sh shell.sh a b c
a b c
a
b
c

$? – 上一个命令的返回值

#! /bin/bash
date
echo $?
err_cmd
echo $?

$ sh shell.sh
2021年11月10日 星期三 20时08分38秒 CST
0
shell.sh: line 4: err_cmd: command not found
127

$$ – 当前进程id

#! /bin/bash
echo $$

$ sh shell.sh
57507

赞赏

微信赞赏支付宝赞赏

其他

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注