Shell 脚本中 $0、$1、$2、$*、$@、$#、$?、$$ 分别表示什么?

推荐答案

本题详细解读

$0

$0 表示当前脚本的文件名。例如,如果你运行 ./script.sh,那么 $0 的值就是 ./script.sh

$1 和 $2

$1$2 分别表示传递给脚本的第一个和第二个参数。例如,如果你运行 ./script.sh arg1 arg2,那么 $1 的值是 arg1$2 的值是 arg2

$*

$* 表示所有传递给脚本的参数,但它们被当作一个整体字符串。例如,如果你运行 ./script.sh arg1 arg2 arg3,那么 $* 的值是 "arg1 arg2 arg3"

$@

$@ 也表示所有传递给脚本的参数,但每个参数都被当作独立的字符串。例如,如果你运行 ./script.sh arg1 arg2 arg3,那么 $@ 的值是 "arg1" "arg2" "arg3"

$#

$# 表示传递给脚本的参数个数。例如,如果你运行 ./script.sh arg1 arg2,那么 $# 的值是 2

$?

$? 表示上一个命令的退出状态。如果上一个命令成功执行,$? 的值通常是 0;如果命令执行失败,$? 的值通常是非零。

$$

$$ 表示当前脚本的进程ID。每个运行的脚本都有一个唯一的进程ID,$$ 就是这个ID。

纠错
反馈