Sono molto, molto nuovo alla programmazione UNIX (in esecuzione su MacOSX Mountain Lion tramite terminale). Ho imparato le nozioni di base da un corso di bioinformatica e metodi molecolari (abbiamo avuto due classi) in cui alla fine utilizzeremo perl e python per scopi di gestione dei dati. Ad ogni modo, abbiamo avuto il compito di scrivere uno script di shell per prendere i dati da un gruppo di file e scriverlo su un nuovo file in un formato che può essere letto da un programma specifico (Migrate-N).Newbie UNIX: script di shell non in esecuzione, comando non trovato
Ho ottenuto un certo numero di funzioni per fare esattamente ciò di cui ho bisogno autonomamente quando li digito nella riga di comando, ma quando li metto tutti insieme in uno script e provo a eseguirlo, ricevo un errore. Ecco i dettagli (mi scuso per la lunghezza):
#! /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
La serie di greps sono solo tirando fuori i dati di sequenza del DNA per ogni sito per ogni locus in nuovi file di testo. I file Samples ... txt hanno i numeri ID di esempio per un sito, i file .fasta hanno le informazioni sulla sequenza organizzate dall'ID campione; il grepping funziona bene a riga di comando se lo eseguo individualmente.
Il secondo gruppo di codice crea il nuovo file effettivo con cui devo finire, che termina con .mig. Le linee dell'eco sono dati relativi ai conteggi (basi di riferimento per locus, popolazioni nell'analisi, campioni per sito, ecc.) Di cui il programma necessita informazioni. Le linee del gatto devono combinare il locus per i dati del sito creati da tutti i grepping al di sotto delle informazioni specifiche del sito dettate nella linea dell'eco. Senza dubbio ottieni l'immagine.
Per creare lo script di shell sono stato iniziando in Excel in modo da poter facilmente copia-incolla/cellule riempimento automatico, il risparmio come testo delimitato da tabulazioni, poi aprire il file di testo in TextWrangler per rimuovere le schede prima di salvare come. sh file (Interruzioni di riga: Unix (LF) e Codifica: Unicode (UTF-8)) nella stessa directory di tutti i file utilizzati nello script. Ho provato a utilizzare chmod +x FILENAME.sh
e chmod u+x FILENAME.sh
per cercare di assicurarmi che sia eseguibile, ma senza successo. Anche se riduco la sceneggiatura a una sola riga di grep (con la prima riga #!/Bin/bash) non riesco a farla funzionare. Il processo richiede solo un momento in cui lo digito direttamente nella riga di comando poiché nessuno di questi file è più grande di 160 KB e alcuni sono significativamente più piccoli. Questo è quello che ho tipo e cosa ottengo quando provo a eseguire il file (HW è la directory corretta)
localhost:HW Mirel$ MigrateNshell.sh
-bash: MigrateNshell.sh: command not found
Sono stato in questa impass da due giorni, in modo che qualsiasi ingresso sarebbe molto apprezzato ! Grazie!!
è la posizione del 'MigrateNshell.sh' nel vostro' path'? Se provi a eseguirlo dalla directory corrente, prova "./MigrateNshell.sh". –