$0
获取当前执行Shell的脚本名。
$n
获取当前shell第n个参数,当大于9时,则用花括号括起来,例如${10},接的参数一空格隔开
$#
获取当前执行shell脚本后面接的参数的个数
$*
获取当前shell脚本所有传参的参数。不加引号和@相同。如果加上引号,如"@相同。如果加上引号,如"@相同。如果加上引号,如"*",则表示将所有的参数视为单个字符串,相当于"$1$2$3$4"
$@
获取当前shell脚本所有传参的参数。不加引号和$*相同。加上引号,则把所有的参数当作不同的单利字符串,相当于"$1"、"$2"。
区别:当加双引号时,两者有区别,当不加双引号时,二者无区别
以下通过例子进行说明:
[root@localhost TestShell]# cat test02.sh
#!/bin/sh
set -- "You are" a man
#获取脚本路径
echo `dirname $0`
#获取脚本名
echo `basename $0`
#输出个数
echo "字符串的个数为:$#"
#分别打印参数
echo "第一个值:" $1
echo "第二个值:"$2
echo "第三个值:"$3
# 测试 $* 和 $@ 不加引号
echo "测试结果如下:"
for i in $*
do
echo $i
done
echo ""
echo "测试结果如下:"
for i in $@
do
echo $i
done
# 测试 $* 和 $@ 加引号
echo "测试结果如下:"
for i in "$*"
do
echo $i
done
echo ""
echo "测试结果如下:"
for i in "$@"
do
echo $i
done
执行输出结果如下:
[root@localhost TestShell]# sh /TestShell/test02.sh
/TestShell
test02.sh
字符串的个数为:3
第一个值: You are
第二个值:a
第三个值:man
测试结果如下:
You
are
a
man
测试结果如下:
You
are
a
man
测试结果如下:
You are a man
测试结果如下:
You are
a
man
本文详细介绍了Shell脚本中各种特殊变量的使用方法,包括如何获取脚本名称、参数数量及参数值等,通过实例演示了$*与$@的区别。
570

被折叠的 条评论
为什么被折叠?



