Ich bin sehr, sehr neu in der UNIX-Programmierung (läuft auf MacOSX Mountain Lion über Terminal). Ich habe die Grundlagen aus einem Kurs über Bioinformatik und Molekularmethoden gelernt (wir hatten zwei Klassen), wo wir Perl und Python für Datenmanagementzwecke verwenden werden. Wie auch immer, wir wurden damit beauftragt, ein Shell-Skript zu schreiben, um Daten aus einer Gruppe von Dateien zu übernehmen und in eine neue Datei in einem Format zu schreiben, das von einem bestimmten Programm (Migrate-N) gelesen werden kann.UNIX-Neuling: Shell-Skript läuft nicht, Befehl nicht gefunden
Ich habe eine Reihe von Funktionen bekommen, um genau das zu tun, was ich brauche, wenn ich sie in die Befehlszeile eintippe, aber wenn ich sie alle in ein Skript einfüge und versuche, es auszuführen, erhalte ich einen Fehler. Hier sind die Details (I für die Länge entschuldigen):
#! /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
Die Serie von greps ist nur für jede Site DNA-Sequenzdaten Herausziehen für jeden Locus in neue Textdateien. Die Samples ... txt-Dateien enthalten die Beispiel-ID-Nummern für eine Site. Die .fasta-Dateien enthalten die Sequenzinformationen nach Sample-ID. Das grepping funktioniert gut in der Befehlszeile, wenn ich es einzeln ausführe.
Die zweite Gruppe von Code erstellt die eigentliche neue Datei, die ich enden muss, die in .mig endet. Die Echolinien sind Daten über Zählungen (Basispaare pro Lokus, Populationen in der Analyse, Stichproben pro Standort usw.), zu denen das Programm Informationen benötigt. Die cat-Zeilen sollen den locus durch Site-Daten, die durch das gesamte grepping unterhalb der in der echo-Zeile festgelegten site-spezifischen Information erzeugt wurden, zusammenstellen. Sie haben zweifellos das Bild.
Zum Erstellen des Shell-Skripts habe ich in Excel gestartet, so kann ich Zellen leicht kopieren, einfügen und als Text mit Tabulatoren speichern, dann die Textdatei in TextWrangler öffnen, um die Tabs vor dem Speichern als zu entfernen. SH-Datei (Zeilenumbrüche: Unix (LF) und Codierung: Unicode (UTF-8)) im selben Verzeichnis wie alle Dateien, die im Skript verwendet werden. Ich habe versucht mit chmod +x FILENAME.sh
und chmod u+x FILENAME.sh
zu versuchen, um sicherzustellen, dass es ausführbar ist, aber ohne Erfolg. Selbst wenn ich das Skript auf eine einzige Grep-Zeile (mit der #!/Bin/bash-ersten Zeile) reduziere, kann ich es nicht zum Laufen bringen. Der Prozess dauert nur einen Moment, wenn ich es direkt in die Befehlszeile eintippe, da keine dieser Dateien größer als 160 KB und einige deutlich kleiner sind. Dies ist, was ich gebe und was ich bekomme, wenn ich versuche, die Datei (HW ist das richtige Verzeichnis)
localhost:HW Mirel$ MigrateNshell.sh
-bash: MigrateNshell.sh: command not found
Ich bin jetzt für zwei Tage in diesem impass zu laufen, so dass jede Eingabe wäre sehr dankbar ! Vielen Dank!!
den Standort von 'MigrateNshell.sh' in Ihrem' PATH' ist? Wenn Sie versuchen, es aus dem aktuellen Verzeichnis auszuführen, versuchen Sie './MigrateNshell.sh'. –