shell中的特殊变量
$? :上一个命令的执行状态返回值
$#::参数的个数
$*:参数列表,所有的变量作为一个字符串
$@:参数列表,每个变量作为单个字符串
$1-9,${10}:位置参数
$$:脚本的进程号
$_:之前命令的最后一个参数
$0:脚本的名称
$!:运行在后台的最后一个进程ID
那么问题来了,这些特殊的变量怎么传递到shell中定义函数中去呢?
一个脚本说明问题
[root@lamp tmp]# cat test.sh #!/bin/sh func () { echo "$1" echo "$2" echo "$#" echo "$*" echo "$@" echo "$?" echo "$0" echo "$$" } func $1 echo ===== I am split line ======== echo "$1" echo "$2" echo "$#" echo "$*" echo "$@" echo "$?" echo "$0" echo "$$" [root@lamp tmp]# sh test.sh argument1 argument2 argument1 1 argument1 argument1 0 test.sh 3231 ===== I am split line ======== argument1 argument2 2 argument1 argument2 argument1 argument2 0 test.sh 3231 [root@lamp tmp]#