title{if - }


#–b 当file存在并且是块文件时返回真
#-c 当file存在并且是字符文件时返回真
#-d 当pathname存在并且是一个目录时返回真
#-e 当pathname指定的文件或目录存在时返回真
#-f 当file存在并且是正规文件时返回真
#-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
#-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
#-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
#-p 当file存在并且是命令管道时返回为真
#-r 当由pathname指定的文件或目录存在并且可读时返回为真
#-s 当file存在文件大小大于0时返回真
#-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
#-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
#-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。

#Bash Shell 里面比较字符写法:
#-eq 等于
#-ne 不等于
#-gt 大于
#-lt 小于
#-le 小于等于
#-ge 大于等于
#-z 空串
#= 两个字符相等
#!= 两个字符不等
#-n 非空串

if [ $b -gt 0 -o $c -gt 0 -a $a -gt 0 ]; then
echo test
fi
#对shell中的关系运算符说明如下:
#-gt 表示greater than,大于
#-lt 表示less than,小于
#-eq 表示 equal,等于
#对shell中的连接符说明如下:
#-a 表示 and,且
#-o 表示 or,或 
#也可以写成这样:
if [ $b -gt 0 ] || [ $c -gt 0 ] && [ $a -gt 0 ]; then
echo test
fi
#其中,&&表示and,||表示or


#文件表达式
if [ -f  file ]    #如果文件存在
if [ -d ...   ]    #如果目录存在
if [ -s file  ]    #如果文件存在且非空 
if [ -r file  ]    #如果文件存在且可读
if [ -w file  ]    #如果文件存在且可写
if [ -x file  ]    #如果文件存在且可执行   

#整数变量表达式
if [ int1 -eq int2 ]    #如果int1等于int2   
if [ int1 -ne int2 ]    #如果不等于    
if [ int1 -ge int2 ]      # 如果>=
if [ int1 -gt int2 ]      # 如果>
if [ int1 -le int2 ]      # 如果<=
if [ int1 -lt int2 ]      # 如果<

if [ "$check" == "" ];then
    echo ${line}
else
    echo 111
fi

##注释多行方法
if false; then
 echo "ni"
 echo "ni"
 echo "ni"
fi

##判断进程是否运行,运行就KILL掉,注意grep -v sh| grep -v grep
var=`ps -aef | grep $1 | grep -v sh| grep -v grep| awk '{print $2}'`
if [ !-z "$var"]
then
  echo $1 process is not running 
else
  kill -9 $var
  echo $1 process killed forcefully, process id $var.
fi


#查看指定进程是否存在
#在获取到 pid 之后,还可以根据 pid 查看对应的进程是否存在(运行),这个方法也可以用于 kill 指定的进程。
if ps -p $PID > /dev/null
then
   echo "$PID is running"
   # Do something knowing the pid exists, i.e. the process with $PID is running
fi

#查pid循环KILL
pids=( $(pgrep -f resque) )
for pid in "${pids[@]}"; do
  if [[ $pid != $$ ]]; then
    kill "$pid"
  fi
done


##或
if [ "$b" = 11 ] || [ "$b" = "22" ];then
  echo $a
fi
##且的表达方式
if [ "$b" = 11 ] && [ "$b" = "22" ];then
  echo $b
fi


project="aaaaa"
if [[ ${project} =~ "aaa" ]]; then
  cp aaa.txt bbb.txt
fi
if [[ ${project} =~ "ccc" ]]; then
  cp aaa.txt ccc.txt
fi


project="aaaaa"
if [[ ${project} =~ "aaa" ]]; then
  echo "aaa111"
else
  echo "aaa222"
fi
if [[ ${project} =~ "ccc" ]]; then
  echo "aaa555"
else
  echo "aaa666"
fi