shell的判断

shell的判断

前言:

     无论什么编程语言都离不开条件判断。SHELL也不例外。

     if list then 
         do something here 
     elif list then 
         do another thing here 
     else 
        do something else here 
     fi 
   

EX1:

#!/bin/sh

SYSTEM=`uname-s`   #获取操作系统类型,我本地是linux

if [ $SYSTEM = "Linux" ] ;then    #如果是linux的话打印linux字符串   特别注意:条件中的空格符

echo "Linux" 
elif [ $SYSTEM = "FreeBSD" ] ;then   
echo "FreeBSD" 
elif [ $SYSTEM = "Solaris" ] ; then 
echo "Solaris" 
else 
echo "What?" 
fi    #ifend

基本上和其他脚本语言一样。没有太大区别。不过值得注意的是。[]里面的条件判断。

1 字符串判断

str1 = str2      当两个串有相同内容、长度时为真 
str1 != str2      当串str1和str2不等时为真 
-n str1        当串的长度大于0时为真(串非空) 
-z str1        当串的长度为0时为真(空串) 
str1           当串str1为非空时为真

2 数字的判断

int1 -eq int2    两数相等为真 
int1 -ne int2    两数不等为真 
int1 -gt int2    int1大于int2为真 
int1 -ge int2    int1大于等于int2为真 
int1 -lt int2    int1小于int2为真 
int1 -le int2    int1小于等于int2为真

3 文件的判断

-r file     用户可读为真 
-w file     用户可写为真 
-x file     用户可执行为真 
-f file     文件为正规文件为真 
-d file     文件为目录为真 
-c file     文件为字符特殊文件为真 
-b file     文件为块特殊文件为真 
-s file     文件大小非0时为真 
-t file     当文件描述符(默认为1)指定的设备为终端时为真

3 复杂逻辑判断

-a         与 
-o        或 
!        非

结尾

   语法虽然简单,但是在SHELL里使用的时候,他的功能变得强大了。

3. shell 的四则运算
3.1 整数的加法和减法
a=3; b=4;
则:c=`expr $a + $b`
echo "c=$c"
++操作有两种方法:
方法1:使用上述方法$b改为1即可。
方法2:let b+=1
注意:以上操作都是针对整数的。
3.2 整除
d=`expr $b / $a`
echo "d=$d"
浮点除:
num3=`echo "sclae=2; $num1/$num2" | bc`
使用bc工具,sclae控制小数点后保留几位
还有一种方法,通过传参数
awk 'BEGIN{printf "%.2f\n",’$num1‘/’$num2‘}'
4. 条件判断及继续循环
       if ["$flag1" == "no data" ]; then
             echo -e "$trans_name\t$flag1"
             continue;
      fi

       if ["$flag2" == "no data" ]; then
             echo -e "$trans_name\t$flag2"
             continue;
      fi
5.sed中使用shell变量
des_chr=`sed -n "$chr_line p"$phast_cons_file | grep -Po "chr[0-9,XY]+"`
注意:使用双引号。
6. 循环文件的行
cat $bed_file | while readoneline 
do
    你的语句
done
7.数组
定义:
      exon_lens=`echo "$one_bed" | awk '{print $11}' |sed 's/,/ /g'`
      exon_len_arr=($exon_lens)
      exon_starts=`echo "$one_bed" | awk '{print $12}'| sed 's/,/ /g'`
      exon_start_arr=($exon_starts)
引用:
    exon_total_len=`expr $exon_total_len +${exon_len_arr[$j]}`
              letexon_total_len+=${exon_len_arr[$j]}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值