@furkan42: Also die drei Varianten sind alle nicht wirklich schwierig. Variante 1 habe ich in dem GW-BASIC-Programm ja implementiert. Allerdings ohne irgendwelche Prüfungen. Das ist ja im Grunde das was die 3 Varianten unterscheidet: Was passiert wenn die die Zahl in der ersten Zeile nicht mit der Anzahl der Hallo-Zeilen übereinstimmt. Falls die Zahl mit der Anzahl der Hallo-Zeilen übereinstimmt, liefern alle drei Varianten das gleiche Ergebnis, da wäre es also egal welche man wählt. Varianten 1 und 2 kommen ohne das komplette einlesen der Datei in den Speicher aus. Das müsste man bei Variante 3 tun, oder die Datei zwei mal lesen.
Was soll denn passieren wenn
die Zahl in der ersten Zeile nicht mit der Anzahl der Hallo-Zeilen übereinstimmt?
die Datei leer ist?
in der ersten Zeile keine Zahl steht?
nicht in jeder Zeile „hallo“ steht?
Wobei mich jetzt die Zahl 10 stutzig macht. Die hast Du im ersten Beitrag schon mal erwähnt, aber da machte die IMHO keinen Sinn. Was hat es denn damit auf sich? Kommt also zu der Liste noch hinzu:
in der ersten Zeile eine 10 steht?
in der ersten Zeile eine Zahl >10 steht?
in der ersten Zeile eine Zahl <0 steht?
Das Programm soll doch die Datei pro Aufruf um ein Hallo erweitern‽ Denn sonst macht die Ausgangsdatei keinen Sinn und man könnte einfach eine Datei mit einer 10 in der ersten Zeile und dann 10 Zeilen Hallo schreiben. Dann sähe das Programm einfach so aus:
1
2
3
4
5
6
7
8
9
10
11
12 | #!/bin/bash
echo '10
Hallo
Hallo
Hallo
Hallo
Hallo
Hallo
Hallo
Hallo
Hallo
Hallo' >hallo.txt
|
typeset
würde ich nicht mehr verwenden, das ist laut Bash-Hilfe „obsolete“ und es wird auf declare
verwiesen.