
Ich versuche, ein SH-Skript zu erstellen, das 'sed' verwendet, um einen Bubblesort-Algorithmus zu erstellen
Ich kämpfe damit, wie man eine For-Schleife erstellt
for n in $1
do
echo $n
done
Wie kann ich den Hauptteil der For-Schleife ändern, um nur n-1
Zyklen zu erstellen? Ich habe das versucht, $1-1
aber es funktioniert nicht. Es wird ein Teil der Zeichenfolge und - 1 gedruckt.
Antwort1
n-1 Zyklenbedeutet, dass der letzte Punkt nicht berücksichtigt werden sollte.
Verwenden Sie den folgenden Ansatz (unter der Annahme, dass Ihr Eingabeargument immer eine Zeichenfolge aus durch Leerzeichen getrennten Teilzeichenfolgen ist):
s=$1
for n in ${s:0:-2}
do
echo $n
done
${s:0:-2}
- Elementausschnitt, der alle Elemente außer dem letzten enthält
^ ^
| |
from to
Antwort2
Verwenden
for i in "$@" ; do echo $i ; done
Sie müssen nicht 1 $ angeben, das ist nicht erforderlich.
Bearbeiten: Das habe ich falsch verstanden. Wenn Sie $1-1 drucken möchten und echo $(( $i-1 ))
versuchen, i-1 Mal zu iterieren, verwenden Sie eine Modifikation davon:
for ((i=1; i<=3; i++))
{
echo $x
}
Bitte veröffentlichen Sie Ihr vollständiges „Bubblesort“-Skript oder erläutern Sie Ihre Frage.