oiooiooioiioooiioiioiooo
Goto Top

Linux Bash in for oder while Befehle der Reihe nach abarbeiten lassen

Moin,

Ich sitze hier wieder mal vor einem Problem.

Bis jetzt bin ich eigentlich davon ausgegangen, dass for oder while die eingetragene Befehle der Reihe nach abarbeiten.

Nun stelle ich fest, dass es doch nicht so ist.

Was mache ich falsch, oder was mache ich nicht richtig?

#!/bin/bash
for line in `cat /tmp/dateiliste.txt`; do
        ZEILE1=$(cat ${line[@]} | head -n1)
        ZEILE2=$(cat ${line[@]} | tail -n1)
echo $ZEILE1\t$ZEILE2
done

Bei mir wird zuerst 1000 Fach Zeile1 ausgeführt …

        ZEILE1=$(cat ${line[@]} | head -n1)

und erst dann 1000 fach Zeile2.

        ZEILE2=$(cat ${line[@]} | tail -n1)

Viele Grüße

Ich

Content-ID: 1426634570

Url: https://administrator.de/forum/linux-bash-in-for-oder-while-befehle-der-reihe-nach-abarbeiten-lassen-1426634570.html

Ausgedruckt am: 22.12.2024 um 13:12 Uhr

tagol01
tagol01 25.10.2021 um 07:29:50 Uhr
Goto Top
Hallo

Ich vermute mal auf leer zeichen, oder wie sieht eine zeile bei dir aus?

Versuch mal folgende dafür zu setzen:

set -f
IFS='  
'  
OIOOIOOIOIIOOOIIOIIOIOOO
OIOOIOOIOIIOOOIIOIIOIOOO 25.10.2021 um 08:47:52 Uhr
Goto Top
Mit dem oben geschriebenem Skript konnte ich das Problem reproduzieren.

das cat /tmp/dateiliste.txt könne man auch mit ls -1 /home/benutzer/Dukumente/*.txt ersetzen. In diesem Ordner sind Textdateien (ASCII text, with CRLF line terminators), welche ich mal gesammelt habe, und möchte jetzt in eine Datei sortiert, eine Datei pro Zeile, mit nur Daten welche ich benötige, packen.

bildschirmfoto vom 2021-10-25 08-28-53

> set -f
> IFS='  
> '  
> 

Ich hoffe ich habe es richtig umgesetzt:

bildschirmfoto vom 2021-10-25 08-45-36

Es hat leider nichts gebracht.
OIOOIOOIOIIOOOIIOIIOIOOO
Lösung OIOOIOOIOIIOOOIIOIIOIOOO 25.10.2021 aktualisiert um 09:52:47 Uhr
Goto Top
ok .. mein Fehler war …

und somit ist die Lösung total einfach 🙈

echo -e "$ZEILE1\t$ZEILE2"