我對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