一 判断
-d 测试是否为目录。
-f 判断是否为文件。
-s 判断文件是否为空 如果不为空 则返回0,否则返回1
-e 测试文件或目录是否存在。 -r 测试当前用户是否有权限读取。 -w 测试当前用户是否有权限写入。 -x 测试当前用户是否有权限执行。 语法: [ -d /etc/fstab ] 且 或 非 && 逻辑的与,"而且"的意思。 || 逻辑的或,"或者"的意思。 ! 逻辑的否 [ $USER != root ] && echo "user" [ $USER != root ] && echo "user" || echo "root" -eq 判断是否等于 -ne 判断是否不等于 -gt 判断是否大于 -lt 判断是否小于 -le 判断是否等于或小于 -ge 判断是否大于或等于 [ 10 -gt 10 ]
二 变量
[root@lanny ~]# FreeMem=`free -m | grep cache: | awk '{print $3}'` 验证变量是否已经获得可用内存量: [root@lanny ~]# echo $FreeMem 609 告警内存不够用: [root@lanny ~]# [ $FreeMem -lt 1024 ] && echo "Insufficient Memory" Insufficient Memory
三 字符串
= 比较字符串内容是否相同。 != 比较字符串内容是否不同。 -z 判断字符串内容是否为空。 ----->从而判断变量是否被定义.
[ -n "$var" ] :判断$var变量是否有值->已经定义?
判断String变量是否为空值: [root@lanny ~]# [ -z $String ] 上一条命令执行成功,说明变量String确实为空值: [root@lanny ~]# echo $? 0 输出当前的系统语言: [root@lanny ~]# echo $LANG en_US.UTF-8 判断当前的系统语言是否为英文,否则输出“不是英语”: [root@lanny ~]# [ $LANG != "en.US" ] && echo "Not en.US" Not en.US
四 语句
if then fi for do done while do done 4.1判断语句 if [ -f /home/ ];then echo ok; fi 4.2循环语句 for i in `seq 1 24`;do echo $i done while :;do echo `date` sleep 2 done
五 参数:
$? 显示上一条命令的返回值,非0则为失败,即不是目录 $1 第一个参数 [root@lanny ~]# vim test.sh #!/bin/bash echo "当前脚本名称为$0" echo "总共有$#个参数,分别是$*。" echo "第1个参数为$1,第5个为$5。 [root@lanny ~]# sh test.sh one two three four five six 当前脚本名称为Example.sh 总共有6个参数,分别是one two three four five six。 第1个参数为one,第5个为five。