Wie erstelle ich eine For-Schleife mit $1 - 1-Zyklen

Wie erstelle ich eine For-Schleife mit $1 - 1-Zyklen

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-1Zyklen zu erstellen? Ich habe das versucht, $1-1aber 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.

verwandte Informationen