在开源的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