1.位置变量
$0:获取当前执行shell脚本的文件名,包括路径(不在shell所在目录执行)
dirname $0 取出路径
basename $0 取出文件名
[tibasbil@ibastst /ibas]$ cat s.sh dirname 0 basename $0 [tibasbil@ibastst /ibas]$ sh s.sh . #当前目录 s.sh #文件名
$n:获取当前执行的shell脚本的第n个参数值,n=1~9,当n=0时表示脚本的文件名,如果n大于9需要用大括号括起来,例如,echo ${10},当n<9的时候就是在命令行中穿的参数依次传入。
[tibasbil@ibastst /ibas]$ cat s.sh echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} [tibasbil@ibastst /ibas]$ sh s.sh 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
$*:获取当前shell的所有参数,将所有的命令行参数视为单个字符串,相当于“$1$2$3”,注意与$#的区别
[tibasbil@ibastst /ibas]$ cat s.sh echo $1 $2 $3 $4 $5 echo $* echo $@ [tibasbil@ibastst /ibas]$ sh s.sh 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
$#:获取当前shell命令行参数的总个数
[tibasbil@ibastst /ibas]$ cat s.sh echo $1 $2 $3 $4 $5 echo $# [tibasbil@ibastst /ibas]$ sh s.sh 1 2 3 4 5 1 2 3 4 5 5
$@:$* 和 $@是一个效果