特殊环境变量
$n
语法
$n
例子
[lanyan@lanyan]$ touch lanyan.sh
[lanyan@lanyan]$ vim lanyan.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
[lanyan@lanyan]$ chmod 777 lanyan.sh
[lanyan@lanyan]$ ./lanyan.sh kkhb xzbbq
==========$n==========
./lanyan.sh
kkhb
xzbbq
$#
语法
$#
例子
[lanyan@lanyan]$ vim parameter.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
echo '==========$#=========='
echo $#
[lanyan@lanyan]$ chmod 777 lanyan.sh
[lanyan@lanyan]$ ./lanyan.sh kkhb xzbbq
==========$n==========
./lanyan.sh
kkhb
xzbbq
==========$#==========
2
$*
语法
$*
例子
[lanyan@lanyan]$ vim lanyan.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
echo '==========$#=========='
echo $#
echo '==========$*=========='
echo $*
[lanyan@lanyan]$ ./lanyan.sh a b c d e f g
==========$n==========
./lanyan.sh
a
b
==========$#==========
7
==========$*==========
a b c d e f g
$@
语法
$@
例子
[lanyan@lanyan]$ vim lanyan.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
echo '==========$#=========='
echo $#
echo '==========$*=========='
echo $*
echo '==========$@=========='
echo $@
[lanyan@lanyan]$ ./lanyan.sh a b c d e f g
==========$n==========
./lanyan.sh
a
b
==========$#==========
7
==========$*==========
a b c d e f g
==========$@==========
a b c d e f g
$?
语法
$?
例子
查看脚本的返回值
[lanyan@lanyan]$ ./helloworld.sh
hello world
[lanyan@lanyan]$ echo $?
0
注
- $n
- n 为数字
- $0 代表该脚本名称
- 9 代表第一到第九个参数
- 十以上的参数,十以上的参数需要用大括号包含,如${10}
- $#
- 获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性
- $*
- 这个变量代表命令行中所有的参数
- $*把所有的参数看成一个整体
- 不可以做循环操作,看作一个值
- $@
- 这个变量也代表命令行中所有的参数
- 不过$@把每个参数区分对待
- 可以做循环操作,因为他把所有参数看作一个数组
- $?
- 最后一次执行的命令的返回状态。
- 如果这个变量的值为 0,证明上一个命令正确执行;
- 如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明 上一个命令执行不正确了。
- 最后一次执行的命令的返回状态。
- #、@都与输入值相关$?完全是一个对返回值验证的一个环境变量
最后不知道什么情况#、@中的$显示不出来,就这样吧