比较运算符 (Comparison Operators)
在If 和其它条件语句中,我们会经常遇到各种比较运算符,下面是常用的比较运算符:

$?: 用于保存刚刚执行的命令的状态返回值;
0:成功执行;
1-255:失败;

bash条件测试:
[ expression ]
[[ expression ]]
test expression

bash编程: 位置变量
 $1, $2, $3, $4, ...


整数测试
 大于:-gt   小于:-lt   等于:-eq   大等:-ge  小等:-le  不等:-ne

bash字符测试:
 >: 大于
 <: 小于
 ==: 等于
 =~: 判断左边的字符串是否能够被右边的模式所匹配;通常用于[[]];

单目:
   -z $STRING: 为空则为真,不空则为假;
   -n $STRING: 为空则为假,不空则真;

bash测试之文件测试:
 操作符 文件路径
 -f: 测试其是否为普通文件,即ls -l时文件类型为-的文件;
 -d: 测试其是否为目录文件,即ls -l时文件类型为d的文件;
 -e: 测试文件是否存在;存在为真,否则为假;
 -r: 测试文件对当前用户来说是否可读; 
 -w: 测试文件对当前用户来说是否可写;
 -x: 测试文件对当前用户来说是否可执行;
 -s: 测试文件大小是否不空,不空则真,空则假;

判断语句:

单分支if语句:

if 条件; then


  语句1
  语句2
  ...
 fi

例:如果用户存在,就说明其存在;

#!/bin/bash
#
UserName=user1

if  grep "^$UserName\>" /etc/passwd &> /dev/null; then


  echo "$UserName exists."


fi

双分支if语句:

 If(如果) ...(符合某些条件) Then(就)

...(执行代码)

Else(反之)

...(执行其它代码)

fi (结束)

例:写一个脚本,生成两个随机数,比较其大小;显示大数;
 bash有个内置变量:$RANDOM

#!/bin/bash
#
A=$RANDOM
B=$RANDOM

if [ $A -ge $B ]; then
  echo "Max number is $A."
else
  echo "Max number is $B."
fi

bash条件判断之多分支if语句:
语法格式:
 if 条件1; then
   语句1
   语句2
   ...
 elif 条件2; then
   语句1
   语句2
   ...
 elif 条件3; then
   语句1
   语句2
   ...
 else
   语句1
   语句2
   ...
 fi   

例:判断当前主机的CPU生产商,其信息在/proc/cpuinfo文件中vendor id一行中。
如果其生产商为GenuineIntel,就显示其为Intel公司;
如果其生产商为AuthenticAMD,就显示其为AMD公司;
否则,就显示无法识别;
#!/bin/bash
#
Vendor=`grep "vendor_id" /proc/cpuinfo | uniq | cut -d: -f2`

if [[ $Vendor =~ [[:space:]]*GenuineIntel$ ]]; then
  echo "intel"
elif [[ $Vendor =~ [[:space:]]*AuthenticAMD$ ]]; then
  echo "AMD"
else
  echo "Unknown"
fi