Nie działa skrypt powłoki, nie znaleziono polecenia

Jestem bardzo, bardzo nowy w programowaniu UNIX (działający na MacOSX Mountain Lion przez Terminal). Nauczyłem się podstaw z kursu bioinformatyki i metod molekularnych (mieliśmy dwie klasy), gdzie w końcu będziemy używać perla i pytona do celów zarządzania danymi. W każdym razie zadanie polegało na napisaniu skryptu powłoki do pobierania danych z grupy plików i zapisaniu go w nowym pliku w formacie, który może zostać odczytany przez określony program (Migrate-N).

Dostałem wiele funkcji, aby zrobić dokładnie to, czego potrzebuję niezależnie, kiedy wpisuję je w wierszu poleceń, ale kiedy umieszczam je wszystkie w skrypcie i próbuję go uruchomić, pojawia się błąd. Oto szczegóły (przepraszam za długość):

#! /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

Seria greps po prostu wyciąga dane sekwencji DNA dla każdego miejsca dla każdego locus na nowe pliki tekstowe. Pliki próbek ... txt mają przykładowe numery identyfikacyjne dla witryny, pliki .fasta zawierają informacje o sekwencji uporządkowane według identyfikatora próbki; grepping działa dobrze w wierszu poleceń, jeśli uruchomię go indywidualnie.

Druga grupa kodu tworzy rzeczywisty nowy plik, z którym muszę skończyć, który kończy się na .mig. Linie echa są danymi o zliczeniach (pary zasad na locus, populacje w analizie, próbki na stronę itp.), O których program potrzebuje informacji. Linie kotów mają łączyć ze sobą miejsce według danych obszaru utworzonych przez wszystkie pomijanie poniżej informacji specyficznych dla miejsca podyktowanych w linii echa. Bez wątpienia otrzymasz zdjęcie.

Aby utworzyć skrypt powłoki, który uruchamiałem w Excelu, mogę łatwo kopiować i wklejać / wypełniać komórki, zapisywać jako tekst rozdzielany tabulatorami, a następnie otwierać ten plik tekstowy w TextWrangler, aby usunąć karty przed zapisaniem jako plik .sh (Line breaks: Unix (LF) i Encoding: Unicode (UTF-8)) w tym samym katalogu, co wszystkie pliki użyte w skrypcie. Próbowałem użyćchmod +x FILENAME.sh ichmod u+x FILENAME.sh próbować upewnić się, że jest wykonalny, ale bezskutecznie. Nawet jeśli skrócę skrypt do jednej linii grep (z pierwszą linią #! / Bin / bash), nie mogę go uruchomić. Proces zajmuje tylko chwilę, gdy wpisuję go bezpośrednio w wierszu poleceń, ponieważ żaden z tych plików nie jest większy niż 160 KB, a niektóre są znacznie mniejsze. To jest to, co wpisuję i co otrzymuję, gdy próbuję uruchomić plik (HW jest właściwym katalogiem)

localhost:HW Mirel$ MigrateNshell.sh
-bash: MigrateNshell.sh: command not found

Jestem w tym impasie od dwóch dni, więc każdy wkład byłby bardzo mile widziany! Dzięki!!

questionAnswers(12)

yourAnswerToTheQuestion