Ich habe 2 Skripte, # 1 und # 2. Jede Arbeit von sich aus OK. Ich möchte eine 15-zeilige Datei zeilenweise lesen und verarbeiten. Skript # 2 wählt Zeilen aus. Zeile 0 ist als erste Zeile = 0, letzte Zeile = 1 angegeben. Zeile 14 wäre erste Zeile = 14, letzte Zeile = 15. Ich sehe gute Ergebnisse von echo. Ich möchte dasselbe mit Skript # 1 machen. Ich kann meinen Kopf nicht richtig herumnisten. Code unten.Wie Schlaufen korrekt verschachtelt werden
#!/bin/bash
# script 1
filename=slash
firstline=0
lastline=1
i=0
exec <${filename}
while read ; do
i=$(($i + 1))
if [ "$i" -ge "${firstline}" ] ; then
if [ "$i" -gt "${lastline}" ] ; then
break
else
echo "${REPLY}" > slash1
fold -w 21 -s slash1 > news1
sleep 5
fi
fi
done
# script2
firstline=(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14)
lastline=(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)
for ((i=0;i<${#firstline[@]};i++))
do
echo ${firstline[$i]} ${lastline[$i]};
done
Eine Randnotiz, könnten Sie ersetzen 'i = $ (($ i + 1))' mit '((i ++))'. – sjsam
Im Nachhinein ist dies ein [XY-Problem] (http://meta.stackexchange.com/a/66378/248777): Das Problem wird besser mit einer einzigen Schleife gelöst, die ein externes Dienstprogramm verwendet, um die interessierende Linie zu extrahieren Zeilennummer - keine Notwendigkeit für eine _nested_ Schleife. – mklement0