Für Schleife für Ports in mehreren Remote-Servern in Linux

296
Andi

Mein Programm muss auf mehreren Remote-Servern mit unterschiedlichen Ports im Skript ausgeführt werden. Hier ein Beispiel:

In Server 1 müssen Sie Folgendes ausführen:

java -jar test.jar 9001 **.**.**.** 9001 java -jar test.jar 9001 **.**.**.** 9002 java -jar test.jar 9001 **.**.**.** 9003 . . . java -jar test.jar 9001 **.**.**.** 9020 

In Server 2 müssen Sie Folgendes ausführen:

java -jar test.jar 9001 **.**.**.** 9021 java -jar test.jar 9001 **.**.**.** 9022 java -jar test.jar 9001 **.**.**.** 9023 . . . java -jar test.jar 9001 **.**.**.** 9035 

...

Um also das Skript bequemer zu erstellen, wie kann eine for-Schleife in jedem Serverskript verwendet werden, um mehrere Befehle auszuführen?

1

1 Antwort auf die Frage

2
rda

Server 1:

for i in $(seq -f "%03g" 1 20) do java -jar test.jar 9001 **.**.**.** 9$ done 

Server 2:

for i in $(seq -f "%03g" 21 35) do java -jar test.jar 9001 **.**.**.** 9$ done 

während

seq -f <format> <first> <last> 

verwendet eine printfFormatzeichenfolge. Das Format muss für den Ausdruck eines Arguments vom Typ geeignet sein double. Es kann eine Konvertierungsspezifikation enthalten, bestehend aus:

  • %: Stellt die Konvertierungsspezifikation vor
  • 0: Der konvertierte Wert wird links mit Nullen anstelle von Leerzeichen aufgefüllt (optional)
  • 3: Dezimalstellenfolge (mit einer ersten Ziffer ungleich Null), die eine Mindestfeldbreite angibt (optional)
  • g: Argument des Typs doublein Gleitkomma- oder Exponentialschreibweise ausgeben. Nachgestellte Nullen werden aus dem gebrochenen Teil des Ergebnisses entfernt. Ein Dezimalpunkt wird nur angezeigt, wenn mindestens eine Ziffer folgt. (Dies ermöglicht es uns, eine zu drucken, doubledie wie eine aussieht integer)

Für weitere Details siehe:

man seq man 3 printf 
Vielen Dank, ich vergesse zu erwähnen, dass hier diese Befehle gleichzeitig ausgeführt werden müssen. Wie kann also die for-Schleife geändert werden? Andi vor 7 Jahren 0
Ich finde es heraus, füge & hinter dem Java-Befehl hinzu. Danke für deine Hilfe. Aber was ist der Mittelwert von% 03g? Andi vor 7 Jahren 0
Fügen Sie nach dem Befehl ein "&" hinzu, um es in den Hintergrund zu senden. rda vor 7 Jahren 0
Vielen Dank. Aber was ist der Mittelwert von% 03g? Es bedeutet "00x" im Hafen? Andi vor 7 Jahren 0
@Andi ja genau, es sagt `seq`, das richtige Format zu verwenden (um Nullen auf der linken Seite hinzuzufügen). Siehe auch meine aktualisierte Antwort. rda vor 7 Jahren 0