Linux Gvim shell 特殊变量
特殊变量:某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。
特殊变量列表:
1. ${0} 当前脚本的文件名
2. ${n} 传递给脚本或函数的参数 n是一个数字,${1}表示第一个参数
3. ${#} 传递给脚本或函数的参数个数
4. ${*} 传递给脚本或函数的所有参数 与${*}的区别请往下看
5. ${@} 传递给脚本或函数的所有参数
6. ${?} 上个命令的退出状态,或函数的返回值
7. ${$} 当前shell 的进程ID 对于shell脚本,就是这些脚本所在的进程ID
例如如下脚本
1 #!/bin/bash
2 echo "File Name: ${0}"
3 echo "First Parameter : ${1}"
4 echo "First Parameter : ${2}"
5 echo "Quoted Values: ${@}"
6 echo "Quoted Values: ${*}"
7 echo "Total Number of Parameters : ${#}"
结果如下
$./hello Zara Ali
File Name : ./hello
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
${*} 和${@}的区别
${*} 和${@}都表示传递给脚本或函数的所有参数。
不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。
被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
下面的例子可以清楚的看到 $* 和 $@ 的区别:
1 #!/bin/bash
2 echo "\$*=" $*
3 echo "\"\$*\"=" "$*"
4 echo "\$@=" $@
5 echo "\"\$@\"=" "$@"
6 echo "print each param from \$*"
7 for var in $*
8 do
9 echo "$var"
10 done
11 echo "print each param from \$@"
12 for var in $@
13 do
14 echo "$var"
15 done
16 echo "print each param from \"\$*\""
17 for var in "$*"
18 do
19 echo "$var"
20 done
21 echo "print each param from \"\$@\""
22 for var in "$@"
23 do
24 echo "$var"
25 done
执行 hello "a" "b" "c" "d",结果如下:
$*= a b c d
"$*"= a b c d
$@= a b c d
"$@"= a b c d
print each param from $*
a
b
c
d
print each param from $@
a
b
c
d
print each param from "$*"
a b c d
print each param from "$@"
a
b
c
d
退出状态 --${?} :获取上一个命令的退出状态。 0-成功 1-失败
#!/bin/bash
echo "测试获取退出状态"
echo ${?}
执行 hello ,结果如下:
“测试”
0
${?}也可以表示函数的返回值,敬请期待!!!