Ich bin neu zu bash Scripting. Ich möchte Zeile für Zeile eine Datei mit einer Tabelle lesen. In jeder Zeile möchte ich die Werte Variablen zuweisen. Dies ist im Grunde das Format meines Codes:While-Schleife Fehler: Syntaxfehler in der Nähe von unerwarteten Token "fertig"
#!/bin/bash
while IFS= read -r line; do
echo $a $b $c $d
#if statements…
done < test.txt
ich diese Fehlermeldung: „While-Schleife Fehler: Syntaxfehler in der Nähe von unerwartetem Token` done‘“
Jede Idee, was mit meinem Code falsch? Ich habe versucht, einige andere Fragen zu dem gleichen Fehler zu lesen, aber ich konnte meinen Code nicht reparieren. Danke für Ihre Hilfe!
EDIT: Dies ist der gesamte Code. Es könnte andere Fehler haben (ich bin wirklich ein Anfänger), aber ich hoffe es hilft.
#!/bin/bash
experiment_database="/home/gperron/datasets/ENCODE_tables/final_tables/test_experiment_database.txt"
file_database="/home/gperron/datasets/ENCODE_tables/final_tables/test_file_database.txt"
EXPERIMENT=`cat $experiment_database | head -n $PBS_ARRAYID | tail -n 1 | cut -f1`
echo "EXPERIMENT #$PBS_ARRAYID: $EXPERIMENT"
while IFS= read -r line; do
echo $file_ID $experiment $target $biological_replicate $technical_replicate $read_number $url $fastq_file $genome
if [ "$experiment" == "$EXPERIMENT" ]; then
if [ $biological_replicate == 1 ]; then
if [ $technical_replicate == 1 ]; then
if [ $read_number == 1 ]; then
ID_111= $file_ID
fastq_111= $fastq_file
url_111= $url
echo "FASTQ file 111 ID: $ID_111"
echo "FASTQ file 111: $fastq_111"
echo "FASTQ file 111 url: $url_111"
elif [ $read_number == 2 ]; then
ID_112= $file_ID
fastq_112= $fastq_file
url_112= $url
echo "FASTQ file 112 ID: $ID_112"
echo "FASTQ file 112: $fastq_112"
echo "FASTQ file 112 url: $url_112"
fi
elif [ $technical_replicate == 2 ]; then
if [ $read_number == 1 ]; then
ID_121= $file_ID
fastq_121= $fastq_file
url_121= $url
echo "FASTQ file 121 ID: $ID_121"
echo "FASTQ file 121: $fastq_121"
echo "FASTQ file 121 url: $url_121"
elif [ $read_number == 2 ]; then
ID_122= $file_ID
fastq_122= $fastq_file
url_122= $url
echo "FASTQ file 122 ID: $ID_122"
echo "FASTQ file 122: $fastq_122"
echo "FASTQ file 122 url: $url_122"
fi
elif [ $biological_replicate == 2 ]; then
if [ $technical_replicate == 1 ]; then
if [ $read_number == 1 ]; then
ID_211= $file_ID
fastq_211= $fastq_file
url_211= $url
echo "FASTQ file 211 ID: $ID_211"
echo "FASTQ file 211: $fastq_211"
echo "FASTQ file 211 url: $url_211"
elif [ $read_number == 2 ]; then
ID_212= $file_ID
fastq_212= $fastq_file
url_212= $url
echo "FASTQ file 212 ID: $ID_212"
echo "FASTQ file 212: $fastq_212"
echo "FASTQ file 212 url: $url_212"
fi
elif [ $technical_replicate == 2 ]; then
if [ $read_number == 1 ]; then
ID_221= $file_ID
fastq_221= $fastq_file
url_221= $url
echo "FASTQ file 221 ID: $ID_221"
echo "FASTQ file 221: $fastq_221"
echo "FASTQ file 221 url: $url_221"
elif [ $read_number == 2 ]; then
ID_222= $file_ID
fastq_222= $fastq_file
url_222= $url
echo "FASTQ file 222 ID: $ID_222"
echo "FASTQ file 222: $fastq_222"
echo "FASTQ file 222 url: $url_222"
fi
fi
fi
fi
done < test_file_database.txt
Bitte lassen Sie mich wissen, wenn ich etwas klären.
Beitrag das Fleisch der Schleife. Sie haben wahrscheinlich einige nicht geschlossene verschachtelte Konstrukte oder unausgeglichene Parens oder so. –
Ich sehe keine Fehler in dem Code, den Sie gepostet haben. Erstellen Sie ein minimales Beispiel, das das Problem reproduziert, und kopieren Sie den genauen Code in Ihre Frage. (Wahrscheinlich werden Sie das Problem selbst lösen, wenn Sie den Testfall eingrenzen; in diesem Fall können Sie die Frage entweder löschen oder eine Antwort posten, je nachdem, ob sie für andere nützlich wäre.) –
Der von Ihnen gepostete Code funktioniert eindeutig -ist –