<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>生信菜鸟团 &#187; 自动化</title>
	<atom:link href="http://www.bio-info-trainee.com/tag/%e8%87%aa%e5%8a%a8%e5%8c%96/feed" rel="self" type="application/rss+xml" />
	<link>http://www.bio-info-trainee.com</link>
	<description>欢迎去论坛biotrainee.com留言参与讨论，或者关注同名微信公众号biotrainee</description>
	<lastBuildDate>Sat, 28 Jun 2025 14:30:13 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.33</generator>
	<item>
		<title>没必要学shell进阶语法</title>
		<link>http://www.bio-info-trainee.com/1410.html</link>
		<comments>http://www.bio-info-trainee.com/1410.html#comments</comments>
		<pubDate>Mon, 22 Feb 2016 12:29:07 +0000</pubDate>
		<dc:creator><![CDATA[ulwvfje]]></dc:creator>
				<category><![CDATA[杂谈-随笔]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[脚本]]></category>
		<category><![CDATA[自动化]]></category>

		<guid isPermaLink="false">http://www.bio-info-trainee.com/?p=1410</guid>
		<description><![CDATA[因为大部分生物信息学软件都是linux版本的，所以生物信息学数据分析工作者必备技 &#8230; <a href="http://www.bio-info-trainee.com/1410.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>因为大部分生物信息学软件都是linux版本的，所以生物信息学数据分析工作者必备技能就是linux，但是大部分人只是拿他当个中转站，我以前也是，直到接触了大批量的任务，自动化流程，才明白这里面的水太深了，不过无所谓，凭我个人的观点，其实shell的进阶语法真的不必要！</p>
<div>当然，只是我一家之言！</div>
<div>我实在是不想去背诵大括号，小括号，中括号以及双重括号到底区别是什么！</div>
<div>
<div><a href="http://www.bio-info-trainee.com/?p=1018">http://www.bio-info-trainee.com/?p=1018</a>  [],[[]],(),(()),{},{{}},以及在前面加上$的区别，以及它们互相杂交组合的区别！！！</div>
<p>我也不想去搞明白操作符两边是否加空格的区别是什么了。</p>
</div>
<div>if((i%5==0)) 来判断变量是否被一个数整除</div>
<div>i=$((i+1))来表示变量自增。</div>
<div>这些东西真的很诡异！</div>
<div>如果你有qsub，condor等任务提交系统，那么你只需要熟悉他们就可以了，但大部分散兵游勇的生物信息学家并没有集群，所以压根不会接触任务提交系统，就需要些自动化脚本了！</div>
<div>
<div><a href="http://www.bio-info-trainee.com/?p=382">http://www.bio-info-trainee.com/?p=382</a></div>
</div>
<div>受限制与机器的cpu以及内存数，需要判断提交了多少任务，等待多久再执行，所以会把一个简单的自动化脚本写的很复杂！</div>
<div>比如下面这个脚本：cat &gt;download_hg38_from_UCSC.sh</p>
<div><span style="color: #ff0000;">for i in $(seq 1 22) X Y M;</span></div>
<div><span style="color: #ff0000;">do echo $i;</span></div>
<div><span style="color: #ff0000;">wget<span class="Apple-converted-space"> </span><a href="ftp://hgdownload.cse.ucsc.edu/goldenPath/hg38/chromosomes/chr$%7Bi%7D.fa.gz">ftp://hgdownload.cse.ucsc.edu/goldenPath/hg38/chromosomes/chr${i}.fa.gz</a>;</span></div>
<div><span style="color: #ff0000;">done</span></div>
<div><span style="color: #ff0000;">gunzip *.gz</span></div>
<div><span style="color: #ff0000;">for i in $(seq 1 22) X Y M;</span></div>
<div><span style="color: #ff0000;">do cat chr${i}.fa &gt;&gt; hg38.fa;</span></div>
<div><span style="color: #ff0000;">done</span></div>
<div><span style="color: #ff0000;">rm -fr chr*.fa</span></div>
<div>可以下载hg38基因组的fasta文件，但是是分染色体一个个下载的！</div>
<div>再比如下面这个，批量做GSEA分析的脚本：</div>
<div>
<div>while read id</div>
<div>do</div>
<div>echo $id</div>
<div>gene=`echo $id |awk '{print $1}'`</div>
<div>probe=`echo $id |awk '{print $2}'`</div>
<div></div>
<div>echo $i</div>
<div>do_GSEA $probe $gene; ##这里是我自己定义的一个function，就不贴出来了</div>
<div>if((i%5==0))</div>
<div>then</div>
<div>sleep 10  ##重点就在这里，每次提交的任务有限制，所以需要休息，不然机器的cpu负载太高！</div>
<div>fi</div>
<div>i=$((i+1))</div>
<div>done &lt;$1</div>
<p>如果，还有其它功能需要实现，我们可以把脚本写的更负载，纯粹的用shell，需要搜索更多的shell技巧。</p>
</div>
<div>但是事实上并没有这个必要，我们现在有了更方便的脚本语言，比如我所擅长的perl</div>
<div>我写一个nohup提交任务的脚本！</div>
<div>
<div>## perl<span class="Apple-converted-space"> </span><a href="http://nohup.pl/">nohup.pl</a><span class="Apple-converted-space"> </span>  deep_count.sh  0</div>
<div>## perl<span class="Apple-converted-space"> </span><a href="http://nohup.pl/">nohup.pl</a><span class="Apple-converted-space"> </span>  deep_count.sh  1</div>
<div>## perl<span class="Apple-converted-space"> </span><a href="http://nohup.pl/">nohup.pl</a><span class="Apple-converted-space"> </span>  deep_count.sh  2</div>
<p>[perl]<br />
## perl nohup.pl   deep_count.sh  0<br />
## perl nohup.pl   deep_count.sh  1<br />
## perl nohup.pl   deep_count.sh  2<br />
$i=1;<br />
open FH,$ARGV[0];<br />
while(&lt;FH&gt;){<br />
    chomp;<br />
    next unless $.%3==$ARGV[1];<br />
    $cmd=&quot;nohup  $_  &amp;&quot;;<br />
    print &quot;$cmd\n&quot;;<br />
    system($cmd);<br />
    sleep(10800) if $i%5==4;<br />
    $i++;<br />
    #exit;<br />
}<br />
[/perl]</p>
</div>
<div>我尝试过用shell，写了很久，总是报错，但是用perl，一分钟我就写完了，所以，最好是用自己熟悉的一种语法最好！</div>
<div></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bio-info-trainee.com/1410.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
