linux 002
腳本編程
一、$
變量:$0為文件名,$1-9為變量,$10以上要加{},如${10},否則第二位會被默認作為$1后的連結(jié)
二、循環(huán)
ls GSE129785_scATAC-{P,T}* | while read id;do echo $id;done
for id in GSE129785_scATAC-{P,T}*;do echo $id;done
三、反引號
單引號和雙引號會剝奪命令是之變成字符串,
但`` 會先執(zhí)行反引號中的命令
for id in `cat config`;do echo $id;done
ls ~/scRNA/atac/*.gz | while read id;do ln -s $id `basename $id`;done
注意:反引號和$()是一樣的,稱為命令替換。${}被稱為變量替換,見002-六、
詳見:https://www.cnblogs.com/chengd/p/7803664.html
四、重定向
1、輸出重定向
bash tmp2.sh 1 > result.txt? #1前面可以有空格
2、錯誤輸出重定向
bash tmp2.sh 2> result.txt? #2前面不能有空格
詳見:https://blog.csdn.net/spaceship20008/article/details/8475267
五、basename
六、%%.*
一個百分號就是去掉最后一個.及右,兩個就是去掉第一個.及右
1、text=GSE129785_scATAC-Hematopoiesis-CD34.peaks.txt.gz;echo ${text%.*}
GSE129785_scATAC-Hematopoiesis-CD34.peaks.txt
2、text=GSE129785_scATAC-Hematopoiesis-CD34.peaks.txt.gz;echo ${text%%.*}
GSE129785_scATAC-Hematopoiesis-CD34