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

 ${?}也可以表示函数的返回值,敬请期待!!!

 

posted @ 2016-06-06 13:48  Blog4Matto  阅读(150)  评论(0编辑  收藏  举报