位置参数变量
[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} |
$* | 这个变量代表命令行中所有的参数,把所有的参数看成一个整体 |
$@ | 这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区别对待 |
$# | 这个变量代表命令行中所有参数的个数 |
预定义变量
预定义变量 |
作 用 |
---|---|
$? |
最后一次执行的命令的返回状态。如果这个变量的值为 0,则证明上一条命令正确执行;如果这 个变量的值为非 0 (具体是哪个数由命令自己来决定),则证明上一条命令执行错误 |
$$ |
当前进程的进程号(PID) |
$! |
后台运行的最后一个进程的进程号(PID) |
"$?"示例
[root@localhost sh]# lshello.sh #ls命令正确执行 [root@localhost sh]# echo $?0
变量"$?"返回一个0的值,说明上一条命令已经正确执行,如果执行错误"$?"会返回非0。
"$$"示例
[root@localhost sh]# vi hello.sh#!/bin/bashecho "The current process is $$"
输出当前进程的PID
"$!"示例
find /root -name hello.sh &
使用find命令在/root目录下査找hello.sh文件,符号"&"的意思是把命令放入后台执行。