在开源的Unix系统中平时为了方便管理就一定会大量使用shell脚本,而在平时在写script的时候快速有效就是有很多内置的变量可以使用,在这里就简单总结整理下,以便于平时写script时快速查阅,POSIX中shell的内置变量如下:
变量 | 意义 |
---|---|
# | 目前进程的参数个数 |
@ | 传递给当前进程的命令行参数 |
- | 连字号,在引用时给予shell的参数选项 |
? | 前一命令的退出状态 |
$ | shell进程的进程编号,一般用的是-bash进程 |
0 | shel程序的名称 |
! | 最近一个后台命令的进程编号 |
ENV | 一旦引用,则用于交互式的shell中 |
HOME | 根目录,root用户的根目录是/root |
IFS | 字段分隔器,相当于(tab)键 |
LANG | 当前locale的默认名称 |
LC_ALL | 当前locale的名称 |
LC_COLLATE | 用来排序字符的当前locale名称 |
LC_MESSAGES | 输出信息的当前语言的名称 |
LINENO | 刚执行过的行在脚本或函数内的行编号 |
NLSPATH | 输出信息的当前语言的目录位置 |
PATH | 命令查找路径 |
PPID | 父进程的进程编号 |
PS1 | 主要的命令提示字符串,默认是“$”,root特权下是“#” |
PS2 | 行继续提示字符串“>” |
PS4 | 以set -x设置执行的跟踪的字符串,默认是“+”,一般是用sh -x *.sh测试跟踪脚本时用 |
PWD | 当前工作目录 |
如果不太明白上面的变量是什么可以echo看下
[root@jim data]# echo $PWD /data [root@jim data]# ps -ef|grep `echo $$` root 16174 16172 0 00:37 pts/1 00:00:00 -bash root 22598 16174 0 13:37 pts/1 00:00:00 ps -ef root 22599 16174 0 13:37 pts/1 00:00:00 grep 16174
而在POSIX中通用的结束状态有6种:
值 | 意义 |
---|---|
0 | 命令成功退出 |
>0 | 在重定向或者是变量、命令等展开期间失败 |
1-125 | 命令不成功退出 |
126 | 命令找到但是文件无法执行 |
127 | 命令找不到 |
>128 | 命令因收到信号而死亡 |
这里就简单的举个例子:
[root@jim test]# ls test1 [root@jim test]# ls -l test1 -rw-r--r-- 1 root root 0 09-16 13:51 test1 [root@jim test]# echo $? 0 [root@jim test]# ls -l test2 ls: test2: 没有那个文件或目录 [root@jim test]# echo $? 2
而test表达式就比较重要的,平时写script时大量的if判断都会使用到
运算符 | 如果······则为真 |
---|---|
string | string不是null |
-b file | file是块设备文件 |
-c file | file是字符设备文件 |
-d file | file是目录 |
-e file | file存在 |
-f file | file为一般文件 |
-g file | file有设置setgid位 |
-h file | file是一符号连接 |
-L file | 同上 |
-n string | string是非null |
-p file | file是FIFO文件 |
-r file | file是可读的 |
-S file | file是socket |
-s file | file不是空 |
-t n | 文件描述符n指向一终端 |
-u file | file有设置setuid位 |
-w file | file是可写入的 |
-x file | file是可执行的 |
-z string | string为null |
s1 = s2 | 字符串s1与s2相同 |
s1 != s2 | 字符串s1与s2不相同 |
n1 -eq n2 | 整数n1等于整数n2 |
n1 -ne n2 | 整数n1不等于整数n2 |
n1 -lt n2 | n1小于n2 |
n1 -gt n2 | n1大于n2 |
n1 -le n2 | n1小于等于n2 |
n1 -ge n2 | n1大于等于n2 |
本文出自 “技术随笔” 博客,谢绝转载!
POSIX中shell下的常用变量、结束状态和test表达式
原文地址:http://jim123.blog.51cto.com/4763600/1853103