Linux shell中的变量名往往以$开头进行引用,有些变量是shell内置的,具有特殊功能。
常用的特殊变量如下:
变量 | 功能 |
---|---|
$0 | 当前执行的进程/程序名 |
$1~$9 | 位置参数变量 |
${10}~${n} | 扩展位置参数变量,第10个位置变量必须用{}大括号括起来 |
$? | 上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错 若退出状态值为0,表示命令运行成功 若退出状态值为127,表示command not found 若退出状态值为126,表示找到了该命令但无法执行(权限不够) 若退出状态值为1&2,表示没有那个文件或目录 |
$$ | 当前所在进程的PID进程号 |
$! | 后台运行的最后一个PID进程号 (当前终端) |
$# | 参数个数 |
$* | 所有参数,当成一个整体输出,每个变量参数之间以空格隔开 |
$@ | 所有参数,参数是独立的,也是全部输出 |
$*和$@的区别:
$* :表示将变量看成一个整体
$@ :表示变量是独立的
范例:文件test.sh
#!/bin/bash
for i in "$@"
do
echo $i
done
echo "------"
for i in "$*"
do
echo $i
done
执行:
./tesh.sh a b c
输出:
a
b
c
------
a b c