【linux编程】生信编程-shell脚本编程-if条件语句

shell编程

if 条件语句

If 条件语句主要有三中形式:

  • if...then…fi,
  • if…then…else…fi
  • if…then…elif…then…else…fi

1. if…then…fi 语法:

if 条件 
then     
   条件判断成立时执行的语句 
fi

这里的条件通常是一个条件测试命令 ,当条件为真 (执行命令的退出状态为0) 时执行 then 后面的语句;其也可以为一个普通的命令,当执行命令的退出状态为 0 时执行 then 后面的语句。then 可以写在 if 的 '条件' 后面,以分号相隔,也可以另起一行直接写,语句必须以 fi 结束,

例子


if echo "Hello" 
then    
    echo "world" 
fi 

str='/usr/bin/perl' 
if grep -q 'perl' "$str"; then    
    echo "I found perl in string '$str'" 
fi 

if [ 2 > 1 ]; then   
    echo "2 is bigger than 1" 
fi

2. if…then…else…fi 语法:

if 条件 
then
    条件判断成立时执行的语句 
else
    条件判断不成立时执行的语句 
fi

当 if 条件为真时执行 then 后面的语句;当 if 条件为假时执行 else 后面的语句,同样语句必须以 fi 结束

例子

a=100 
b=99 
if [[ -n $a && -n $b ]]; 
then
    if test $a -ge $b; then
        echo "a ($a) is bigger than b ($b)"
    else 
        echo "a ($a) is smaller than b ($b)"
    fi
fi

执行脚本得到结果: a (100) is bigger than b (99)


3. if…then…elif…then…else…fi

if 条件 
then
    (if) 条件判断成立时执行的语句 
elif 条件 
then
    (elif) 条件判断成立时执行的语句 
else
    (if 与 elif) 条件判断都不成立时执行的语句 
fi

语句必须以 fi 结束。可以把 fi 记成 if 的颠倒,if...fi 闭合后才形成完整的 if 语句。

例子

#!/bin/bash
set -e 
set -u 
if [[ -x example.sh ]]; then
    echo "The file 'example.sh' exists and is executable" 
elif [[ -f example.sh ]]; then
    echo "The file 'example.sh' exists but is not executable" 
else
    echo "The file 'example.sh' does not exist" 
fi

另存脚本为example3-3.sh,执行脚本;执行 touch example.sh 后执行脚本;执行 chmod +x example.sh 后再次执行脚本,将得到以下结果:


条件判断之 test, [] 与 [[]]

这三个命令都属于 shell 里面的条件测试命令,条件判断的返回状态为 0 (真) 或者 1 (假),if 基于条件测试返回的结果来决定如何执行下面的代码。

需要注意的是 [ ] 与 [[ ]] 也是命令!

故成对方括号之间的内容可以理解为条件测试的参数,根据我们前面讲过的原则,参数之间要以空格分割,所以在写条件判断时一定要注意:**用空格分割参数! **

1. 整数和字符串比较操作符:

  • 操作符 描述
  • -z str 字符串为空为真
  • -n str 字符串为非空为真
  • = 两个字符串相同为真
  • != 两个字符串不同为真
  • -eq 操作对象的值相等为真
  • -ne 操作对象的值不等为真
  • -gt 左面的值大于右面的值为真
  • -lt 左面的值小于右面的值为真
  • -ge 左面的值大于等于右面的值为真
  • -le 左面的值小于等于右面的值为真

2. 文件和目录测试操作符

常用的文件测试操作符有:

  • 操作符 描述
  • -f 测试文件是否为常规文件
  • -e 测试文件是否存在
  • -d 测试文件是否为目录
  • -r 测试文件是否可读
  • -w 测试文件是否可写
  • -x 测试文件是否可执行

3. 逻辑操作符:

  • 逻辑操作符 && (所有条件都符合为真)
  • || (其中一个条件符合即为真)
  • ! (不符合条件为真)

4. 正则表达比较操作符 (=~)

  • 通配符 描述
  • ^ 匹配行的开始
  • $ 匹配行的结束
  • . 匹配任意一个字符
    • 匹配零次或多次前面的单元/字符 *
  • ? 匹配零次或1次前面的单元/字符
    • 匹配1次或者多次前面的单元/字符 +
  • \n 匹配换行符
  • \t 匹配制表符
  • \s 匹配空格
  • \w 匹配字母数字下划线
  • \d 匹配数字

条件语句使用技巧

  • 务必记得用 fi 来封闭 if 语句
  • 在使用新的关键词 (如 then else 等) 时,记得另起一行或者用 ';' 分割。
  • 在条件判断中使用变量时,我们最好用双引号将变量引起来,以减少错误的产生。
  • 在 [] 或 [[ ]] 是命令,记得其中的参数之间需要加空格。
  • test 和 [ ] 完全相同,但 [[ ]] 是它们的加强版本,在不想了解细节的情况下,推荐使用 [[ ]] 进行条件判断。

你可能感兴趣的:(【linux编程】生信编程-shell脚本编程-if条件语句)