Schleifenbildung durch den Inhalt einer Datei in der Bash
Wie kann ich jede Zeile einer Textdatei mit Bash durchlaufen?
Mit diesem Skript:
echo "Start!"
for p in (peptides.txt)
do
echo "${p}"
done
erhalte ich diese Ausgabe auf dem Bildschirm:
Start!
./runPep.sh: line 3: syntax error near unexpected token `('
./runPep.sh: line 3: `for p in (peptides.txt)'
(Später möchte ich etwas Komplizierteres mit $p
machen als nur die Ausgabe auf dem Bildschirm).
Die Umgebungsvariable SHELL ist (aus env):
SHELL=/bin/bash
/bin/bash --version
ausgeben:
GNU bash, version 3.1.17(1)-release (x86_64-suse-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
cat /proc/version
Ausgabe:
Linux version 2.6.18.2-34-default (geeko@buildhost) (gcc version 4.1.2 20061115 (prerelease) (SUSE Linux)) #1 SMP Mon Nov 27 11:46:27 UTC 2006
Die Datei peptides.txt enthält:
RKEKNVQ
IPKKLLQK
QYFHQLEKMNVK
IPKKLLQK
GDLSTALEVAIDCYEK
QYFHQLEKMNVKIPENIYR
RKEKNVQ
VLAKHGKLQDAIN
ILGFMK
LEDVALQILL
1228
3
Eine Möglichkeit ist, dies zu tun:
und die Einzeiler-Variante:
Mit diesen Optionen wird die letzte Zeile der Datei übersprungen, wenn es keinen abschließenden Zeilenvorschub gibt.
Sie können dies wie folgt vermeiden:
Option 1a: While-Schleife: Jeweils eine Zeile: Umleitung der Eingabe
Option 1b: While-Schleife: Jeweils eine Zeile: Öffnen Sie die Datei, lesen Sie von einem Dateideskriptor (in diesem Fall Dateideskriptor #4).