1.设置变量的作用范围
export 变量名
export 变量名=变量值
2.整数变量的运算
expr 变量1 运算符 变量2 【运算符 变量3】
+ 加法运算;- 减法运算;\* 乘法运算;/ 除法运算;% 取余运算符
3.test命令
测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则返回其他数值
格式 test 条件表达式
[ 表达式 ](中括号与表达式之间至少有一个空格,一般用于if等条件测试语句)
[root@localhost ~]# [ -d /media/cdrom ] (判断是否为文件夹,0为是,1为否)
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -d /media/cdrom/Server ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -d /media/cdrom ] && echo "YES"(当条件成立时输出YES)
YES
参考地址:http://blog.csdn.net/cjsafty/article/details/6669755
(1)test文件测试:
-b file 若文件存在且是一个块特殊文件,则为真
-c file 若文件存在且是一个字符特殊文件,则为真
-d file 若文件存在且是一个目录,则为真
-e file 若文件存在,则为真
-f file 若文件存在且为一个规则文件,则为真
-g file 若文件存在且设置了SGID位的值,则为真
-h file 若文件存在且为一个符号链接,则为真
-k file 若文件存在且设置了“sticky”位的值,则为真
-p file 若文件存在且为一已命名管道,则为真
-s file 若文件存在且其大小大于零,则为真
-u file 若文件存在且设置了SUID位的值,则为真
-r file 若文件存在且可读,则为真
-w file 若文件存在且可写,则为真
-x file 若文件存在且可执行,则为真
-o file 若文件存在且被有效用户ID所拥有,则为真
(2)test字符串比较
-z string 若string长度为0,则为真
-n string 若string长度不为0,则为真
string1 = string2 若两个字符串相等,则为真
string1 != string2 若两个字符串不相等,则为真
(3)test命令的数字比较操作符
int1 -eq int2 若int1等于int2,则为真
int1 –ne int2 若int1不等于int2,则为真
int1 –lt int2 若int1小于int2,则为真
int1 –le int2 若int1小于等于int2,则为真
int1 –gt int2 若int1大于int2,则为真
int1 –ge int2 若int1大于等于int2,则为真
(4)test复合表达式
! expr 若expr为假则复合表达式为真。expr可以是任何有效的测试表达式
expr1 -a expr2 若expr1和expr2都为真,则为真
expr1 -o expr2 若expr1和expr2有一个为真,则为真
4.特殊shell变量
$0当前脚本文件名
$n传递给脚本或函数的参数。n是一个数字,表示第几个参数
$#传递给脚本或函数的参数个数
$*传递给脚本或函数的所有参数
$@传递给脚本或函数的所有参数
$?上个命令退出状态或函数返回值,成功为0失败为1
$$当前shell脚本的进程ID,即脚本所在的进程ID
注:$*与&@都表示传递给函数或脚本的所有参数,不被引号包含时,都以“$1”,“$2”,“$3”的形式输出所有参数,当被""包含时,$*以“$1,$2,$3”的形式输出所有参数,而$@会将参数分开,以“$1”,“$2”,“$3”的形式输出。
5.整数值比较
[ 整数1 操作符 整数2]
[root@localhost ~]# who | wc -l
7
[root@localhost ~]# [ $(who | wc -l) -gt 5 ] && echo "Too many."
Too many.
[root@localhost ~]# [ $(who | wc -l) -ge 10 ] && echo "> = 10."
[root@localhost ~]
注:who 可以得知目前有哪些用户登陆系统,单独执行who会列出登录账户,使用的终端机,登入时间以及从何处登入等。
-eq:等于 -nq:不等于 -gt:大于 -lt:小于 -le:大于或等于 -ge:大于或等于
6.字符串比较
[ 字符串1 -字符串2 ]
[ 字符串1 !=字符串2]
[-z 字符串]
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
[root@localhost ~]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US
7.逻辑测试
[ 表达式1 ] 操作符[ 表达式2 ]
命令1 操作符 命令2
[root@localhost ~]# echo $USER
root
[root@localhost ~]# [ $USER != "teacher" ] && echo "Not teacher"
Not teacher