美文网首页
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