推荐答案
$0: 当前脚本的文件名 $1: 传递给脚本的第一个参数 $2: 传递给脚本的第二个参数 $*: 所有传递给脚本的参数,作为一个整体字符串 $@: 所有传递给脚本的参数,每个参数作为独立的字符串 $#: 传递给脚本的参数个数 $?: 上一个命令的退出状态 $$: 当前脚本的进程ID
本题详细解读
$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。