标签:shell 特殊变量
位置变量:
$0: 获取当前执行shell的文件名称,如果执行脚本带路径那么就包括脚本路径
$n: 获取当前执行的shell脚本的第ng参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9,大括号括起来${10}.
[root@linux-node1 ~]# vim q.sh
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15}
输出的结果
[root@linux-node1 ~]# sh q.sh {a..z}
a b c d e f g h i j k l m n o
$*: 将所有的命令行所有参数视为单个字符串,等同于 “$1$2$3”,"$*"
$@: 将命令行每个参数视为单独的字符串,等同于“$!”"$2" "$2"这是将参数传递给其他程序的最佳方式,因为他会保留所有内嵌在每个参数里的任何空白
注意:上述区别仅限在于加双引号的时候,即“$*”与“$@”
例:[root@linux-node1 ~]# set -- "I am" from HuNan
[root@linux-node1 ~]# echo $#
3
例:
[root@linux-node1 ~]# for i in "$*";do echo $i;done 有双引号的情况下,当做一个参数输出
I am from HuNan
[root@linux-node1 ~]# for i in "$@";do echo $i;done 有双引号的情况下,独立输出
I am
from
HuNan
例 :
[root@linux-node1 ~]# for i;do echo $i;done 去掉in变量列表,相当于in “$@”
I am
from
HuNan
例:
[root@linux-node1 ~]# for i in $*;do echo $i;done 不加双引号,把所有参数输出,然后第一个参数“I am”也拆开了
I
am
from
HuNan
$?: 获取执行上一个指令的返回值(0 为成功,非零为失败) 这个变量很常用
例:
echo $?
$#:获取当前执行的shell脚本后面的参数总个数。
企业案 例控制用户传参个数:
[root@linux-node1 ~]# vim q1.sh
[ $# -ne 2 ] && {
echo "pls input two number"
exit 1 ---->赋值给当前的shell的$?变量了。
}
echo "Thanks!"
标签:shell 特殊变量
原文地址:http://zqingq.blog.51cto.com/6768398/1716551