Linux shell编程(shell特殊变量完全介绍和使用教程)

上一章Linux shell编程请查看:基本shell变量的定义和使用
【Linux shell编程(shell特殊变量完全介绍和使用教程)】在本章中我们将详细讨论Unix中的特殊变量。在前面的一章中我们了解了如何在变量名中使用某些非字母数字字符,这是因为这些字符用于特殊Unix变量的名称,这些变量是为特定的函数保留的。
例如echo $$中的$字符表示当前shell的进程ID号或PID,这个命令命令输出当前shell的PID。
下表显示了一些可以在shell脚本中使用的特殊变量:

编号 变量 & 描述
1 $0 当前脚本的文件名。
2 $n 这些变量与调用脚本的参数相对应。这里n是一个正的十进制数,对应于一个参数的位置(第一个参数是$1,第二个参数是$2,依此类推)。
3 $# 提供给脚本的参数数量。
4 $* 所有的参数都是双引号,如果脚本接收到两个参数$*就等于$1 $2。
5 $@ 所有的参数都是单独双引号,如果脚本接收到两个参数$@就等于$1 $2。
6 $? 最后执行的命令的退出状态。
7 $$ 当前shell的进程号,对于shell脚本这是它们执行的进程ID。
8 $! 最后一个后台命令的进程号。
1、命令行参数命令行参数$1,$2,$3,…$9是位置参数,$0指向实际的命令、程序、shell脚本或函数,$1、$2、$3…$9作为该命令的参数。下面的脚本使用与命令行相关的各种特殊变量:
#!/bin/shecho "文件名: $0" echo "第一个参数 : $1" echo "第二个参数 : $2" echo "引用值: $@" echo "引用值: $*" echo "参数数量 : $#"

2、特殊参数$*和$@有一些特殊的参数允许一次访问所有的命令行参数,$*和$@的作用是一样的,除非用双引号””括起来。这两个参数都指定了命令行参数,但是“$*”特殊参数将整个列表作为一个参数并且中间有空格,而“$@”特殊参数将整个列表分隔成单独的参数。
我们可以编写如下所示的shell脚本,用$*或$@特殊参数处理未知数量的命令行参数:
#!/bin/shfor TOKEN in $* do echo $TOKEN done

3、退出状态$?变量表示前一个命令的退出状态,退出状态是每个命令完成后返回的数值。通常大多数命令如果成功则返回0退出状态,如果不成功则返回1。
一些命令由于特定的原因返回额外的退出状态,例如一些命令可以区分不同类型的错误,并根据特定的故障类型返回不同的退出值。

    推荐阅读