shell常用脚本变量

  作者:会飞的zxl

变量

含义

$0

当前脚本的文件名

$n

传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。

$#

传递给脚本或函数的参数个数。

$*

传递给脚本或函数的所有参数。

$@

传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。

$?

上个命令的退出状态,或函数的返回值。

$$

当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

-e                          文件存在

-f                          被测文件是一个regular文件(正常文件,非目录或设备)

-s                          文件长度不为0

-d                          被测对象是目录

-b                          被测对象是块设备

-c                          被测对象是字符设备

-p                          被测对象是管道

-h                          被测文件是符号连接

-L                          被测文件是符号连接

-S(大写)                    被测文件是一个socket

-t                          关联到一个终端设备的文件描述符。用来检测脚本的stdin[-t0]或[-t1]是一个终端

-r                          文件具有读权限,针对运行脚本的用户

-w                          文件具有写权限,针对运行脚本的用户

-x                          文件具有执行权限,针对运行脚本的用户

-u                          set-user-id(suid)标志到文件,即普通用户可以使用的root权限文件,通过chmod +s file实现

-k                          设置粘贴位

-O                          运行脚本的用户是文件的所有者

-G                          文件的group-id和运行脚本的用户相同

-N                          从文件最后被阅读到现在,是否被修改

f1 -nt f2                   文件f1是否比f2新

f1 -ot f2                   文件f1是否比f2旧

f1 -ef f2                   文件f1和f2是否硬连接到同一个文件

-z                        字符串为null,即长度为0

-n                        字符串不为null,即长度不为0