位置参数变量
在 Linux 的命令行中,当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数。其中,$0 代表命令行本身,$1 代表第 1 个参数,$2 代表第 2 个参数,依次类推。当参数个数超过 10 个时,就要用大括号把这个数字括起来,例如,${10} 代表第 10 个参数,${14} 则代表第 14 个参数。举个例子:
[root@localhost ~]# ls anaconda-ks.cfg install.log install.log.syslog
$0 的值就是 ls 命令本身,$1 的值就是 anaconda-ks.cfg 这个文件,$2 是 install.log 文件,$3 是 install.log.syslog 文件。在 Shell 中可以识别的位置参数变量如表 1 所示。
位置参数变量 | 作 用 |
---|---|
$n | n 为数字,$0 代表命令本身,$1〜$9 代表第 1〜9 个参数,10 以上的参数需要用大括号包含, 如${10} |
$* | 这个变量代表命令行中所有的参数,把所有的参数看成一个整体 |
$@ | 这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区别对待 |
$# | 这个变量代表命令行中所有参数的个数 |
预定义变量
预定义变量是在 Shell 一开始时就定义的变量,这一点和默认环境变量有些类似。不同的是,预定义变量不能重新定义,用户只能根据 Shell 的定义来使用这些变量。
预定义变量 |
作 用 |
---|---|
$? |
最后一次执行的命令的返回状态。如果这个变量的值为 0,则证明上一条命令正确执行;如果这 个变量的值为非 0 (具体是哪个数由命令自己来决定),则证明上一条命令执行错误 |
$$ |
当前进程的进程号(PID) |
$! |
后台运行的最后一个进程的进程号(PID) |
"$?"示例
[root@localhost sh]# ls
hello.sh #ls命令正确执行
[root@localhost sh]# echo $?
变量"$?"返回一个0的值,说明上一条命令已经正确执行,如果执行错误"$?"会返回非0。
"$$"示例
[root@localhost sh]# vi hello.sh
#!/bin/bash
echo "The current process is $$"
输出当前进程的PID
"$!"示例
find /root -name hello.sh &
使用find命令在/root目录下査找hello.sh文件,符号"&"的意思是把命令放入后台执行。