推荐答案
$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。