shell 特殊变量

变量   含义
$0      当前脚本的文件名
$n      传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#      传递给脚本或函数的参数个数。
$*      传递给脚本或函数的所有参数。
$@    传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$?     上个命令的退出状态,或函数的返回值。
$$    当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

示例1
#!/bin/bash

echo "script file name: $0"
echo "first parameter : $1"
echo "second parameter: $2"
echo "all parameters: $@"
echo "all parameters: $*"
echo "total parameter count : $#"
echo "current script file's pid: $$"

echo '------------"$@"-----------'
for var in "$@"
do
    echo $var
done
echo '------------"$*"-----------'
for var in "$*"
do
    echo $var
done
echo '-----------$@-----------'
for var in $@
do
    echo $var
done
echo '---------- $*------------'
for var in $*
do
    echo $var
done

执行:
[root@updb-new1 script]# sh bianliang.sh aa bb cc

输出结果:
script file name: bianliang.sh
first parameter : aa
second parameter: bb
all parameters: aa bb cc
all parameters: aa bb cc
total parameter count : 3
current script file's pid: 15515
------------"$@"-----------
aa
bb
cc
------------"$*"-----------
aa bb cc
-----------$@-----------
aa
bb
cc
---------- $*------------
aa
bb
cc


$* 和 $@ 的区别
$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。
但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

执行:
[root@updb-new1 script]# sh bianliang.sh "aa bb cc"


输出结果:
script file name: bianliang.sh
first parameter : aa bb cc
second parameter:
all parameters: aa bb cc
all parameters: aa bb cc
total parameter count : 1
current script file's pid: 15516
------------"$@"-----------
aa bb cc
------------"$*"-----------
aa bb cc
-----------$@-----------
aa
bb
cc
---------- $*------------
aa
bb
cc


参考:http://c.biancheng.net/cpp/view/2739.html

猜你喜欢

转载自huangqiqing123.iteye.com/blog/2266166