我对UNIX编程非常非常陌生(通过终端在MacOSX Mountain Lion上运行)。我一直在从生物信息学和分子方法课程(我们有两个课程)中学习基础知识,我们最终将使用perl和python进行数据管理。无论如何,我们的任务是编写一个shell脚本从一组文件中获取数据并将其写入一个可以被特定程序(Migrate-N)读取的格式的新文件。UNIX新手:shell脚本未运行,未找到命令
我已经获得了许多功能,可以在命令行中键入它们时独立完成所需功能,但是当我将它们全部放在一个脚本中并尝试运行时,出现错误。下面是详细信息(我的道歉长度):
#! /bin/bash
grep -f Samples.NFCup.txt locus1.fasta > locus1.NFCup.txt
grep -f Samples.NFCup.txt locus2.fasta > locus2.NFCup.txt
grep -f Samples.NFCup.txt locus3.fasta > locus3.NFCup.txt
grep -f Samples.NFCup.txt locus4.fasta > locus4.NFCup.txt
grep -f Samples.NFCup.txt locus5.fasta > locus5.NFCup.txt
grep -f Samples.Salmon.txt locus1.fasta > locus1.Salmon.txt
grep -f Samples.Salmon.txt locus2.fasta > locus2.Salmon.txt
grep -f Samples.Salmon.txt locus3.fasta > locus3.Salmon.txt
grep -f Samples.Salmon.txt locus4.fasta > locus4.Salmon.txt
grep -f Samples.Salmon.txt locus5.fasta > locus5.Salmon.txt
grep -f Samples.Cascades.txt locus1.fasta > locus1.Cascades.txt
grep -f Samples.Cascades.txt locus2.fasta > locus2.Cascades.txt
grep -f Samples.Cascades.txt locus3.fasta > locus3.Cascades.txt
grep -f Samples.Cascades.txt locus4.fasta > locus4.Cascades.txt
grep -f Samples.Cascades.txt locus5.fasta > locus5.Cascades.txt
echo 3 5 Salex_melanopsis > Smelanopsis.mig
echo 656 708 847 1159 779 >> Smelanopsis.mig
echo 154 124 120 74 126 NFCup >> Smelanopsis.mig
cat locus1.NFCup.txt locus2.NFCup.txt locus3.NFCup.txt locus4.NFCup.txt locus5.NFCup.txt >> Smelanopsis.mig
echo 32 30 30 18 38 Salmon River >> Smelanopsis.mig
cat locus1.Salmon.txt locus2.Salmon.txt locus3.Salmon.txt locus4.Salmon.txt locus5.Salmon.txt >> Smelanopsis.mig
echo 56 52 24 29 48 Cascades >> Smelanopsis.mig
cat locus1.Cascades.txt locus2.Cascades.txt locus3.Cascades.txt locus4.Cascades.txt locus5.Cascades.txt >> Smelanopsis.mig
该系列里grep的只是拉出DNA序列数据为每个站点每个位点到新的文本文件。 Samples ... txt文件具有站点的示例ID号,.fasta文件具有按样本ID组织的序列信息;如果我单独运行,grep在命令行中工作得很好。
第二组代码创建了我需要结束的实际新文件,该文件以.mig结尾。回波线是关于计划需要信息的计数(每个基因座的碱基对,分析中的群体,每个位点的样本等)的数据。猫线将按照回声线指定的特定站点信息下的所有灰线所创建的站点数据将轨迹混合在一起。你毫无疑问得到了图片。
为了创建shell脚本,我一直在Excel中启动,因此我可以轻松地复制粘贴/自动填充单元格,保存为制表符分隔文本,然后在TextWrangler中打开该文本文件以在保存之前移除制表符。 sh文件(换行符:Unix(LF)和Encoding:Unicode(UTF-8))与脚本中使用的所有文件位于同一目录中。我试过使用chmod +x FILENAME.sh
和chmod u+x FILENAME.sh
来确保它是可执行的,但无济于事。即使我将脚本简化为仅仅一个grep行(使用#!/ bin/bash第一行),我也无法使其工作。这个过程只需要一点时间,直接输入到命令行中,因为这些文件都不大于160KB,有些文件显着小一些。这是我输入和我所得到的,当我尝试运行文件(HW是正确的目录)
localhost:HW Mirel$ MigrateNshell.sh
-bash: MigrateNshell.sh: command not found
我已经在这个impass两天了,所以任何输入将不胜感激!谢谢!!
''MigrateNshell.sh'在'PATH'中的位置?如果试图从当前目录运行它,请尝试使用'./MigrateNshell.sh'。 – 2013-05-13 19:30:14