美文网首页
Linux - shell 控制流

Linux - shell 控制流

作者: 致知_5974 | 来源:发表于2021-11-01 16:30 被阅读0次
    1. 重定向符号 >
      脚本:把一堆命令打包在一起执行

    2.变量
    在内容中开一个空间,把一个数字或文字暂时保存在空间中
    shell 中输出: echo, 输出或引用变量时要增加$符号
    如:

    a=10 ## 注意:赋值无空格
    echo $10
    

    运算:+ - /* / (*号要有转议符 )

    a=10
    b=3
    c=`expr $a + $b` ##  公式中运算符两侧要有空格
    echo $c
    
    1. if语句


      Screen Shot 2021-11-01 at 4.17.31 PM.png

    -gt greater than
    < -lt less than
    = -ge greater equal
    <= -le less equal
    = -eq

    a=10
    b=35
    
    if [ $a -gt $b ]
    then 
        echo $a
    else
        echo $b
    fi
    

    4.for循环

    for x in 1 2 3
    do
        echo $x 
    done
    
    1. while 循环
    x=1
    while [ $x -le 10 ]
    do
        echo $x
        x=`expr $x + 1`
    done
    

    小应用 1. 批量修改文件名称
    fastq文件如下(paired)

    1.txt                  SRR3182423_2.fastq.gz  SRR3182434_2.fastq.gz  SRR3182444_2.fastq.gz
    id_name.txt            SRR3182433_1.fastq.gz  SRR3182435_1.fastq.gz
    mv.sh                  SRR3182433_2.fastq.gz  SRR3182435_2.fastq.gz
    SRR3182423_1.fastq.gz  SRR3182434_1.fastq.gz  SRR3182444_1.fastq.gz
    

    根据id_name.txt 中id和case的对照关系,修改fastq文件名

    cat id_name.txt
    SRR3182423      case1_germline
    SRR3182433      case1_biorep_A_techrep_1
    SRR3182434      case1_biorep_B
    SRR3182435      case1_biorep_C
    SRR3182444      case1_techrep_2
    

    实现如下:

    cat id_name.txt | while read id
    do
               arr=(${id}) # array 默认打印第一个元素 
               sample=${arr[0]}
               case=${arr[1]}
               #echo $arr
               #echo $sample
               #echo $case
               mv ./${sample}_1.fastq.gz ./${case}_1.fastq.gz
               mv ./${sample}_2.fastq.gz ./${case}_2.fastq.gz
    done    
    

    tips:
    1.echo array时,默认只输出array的第一个元素,即array[0].

    1. 害怕出错时,把中间的变量都打印出来,及时检查

    相关文章

      网友评论

          本文标题:Linux - shell 控制流

          本文链接:https://www.haomeiwen.com/subject/iagzaltx.html