So erstellen Sie ein einfaches Skript, das ein Zahlenzeichen um 1 erhöht

So erstellen Sie ein einfaches Skript, das ein Zahlenzeichen um 1 erhöht

Ich muss einen einzelnen Befehl für VIELE VLANs hinzufügen und frage mich, ob ich irgendwie eine einfache Textdatei generieren kann. Dann kann ich die Textdatei einfach in den Netzwerk-Switch einfügen und die erforderlichen Zeilen werden hinzugefügt.

Im Wesentlichen dieser einzelne Befehl:

ip dhcp-relay 10.32.150.129 10.32.50.1 enable

müssen nacheinander ausgeführt werden, wobei die Anzahl der Schritte mit 0,50 um 1 erhöht wird.

Es wäre also etwa .50, .51, .52, .53 ...

Es würde also eine Datei wie die folgende generiert:

ip dhcp-relay 10.32.150.129 10.32.50.1 enable
ip dhcp-relay 10.32.151.129 10.32.51.1 enable
ip dhcp-relay 10.32.152.129 10.32.52.1 enable

usw...

hier ist mein Skript

#!/bin/bash

if xy=50

    echo "ip dhcp-relay 10.32.150.129 10.32.50.1 enable" >> pastethisinswitch.txt
    echo "ip dhcp-relay 10.32.1xy.129 10.32.xy.1 enable" >> pastethisinswitch.txt

    xy+1

    until xy=99
done

Antwort1

So wie du es beschreibst, ist es ganz einfach:

for k in {50..99}; do echo ip dhcp-relay 10.32.1$k.129 10.32.$k.1 enable; done > pastethisinswitch.txt

Auf diese Weise lässt sich die Skalierung jedoch nur bis 99 durchführen.

Sie können es wie folgt auf 254 skalieren:

for k in {50..154}; do echo ip dhcp-relay 10.32.$(expr 100 + $k).129 10.32.$k.1 enable; done > pastethisinswitch.txt

Ihr ursprünglicher Versuch würde in der funktionierenden Form etwa so aussehen:

#!/bin/bash

k=50

while [ "$k" -lt "100" ];
do
    echo "ip dhcp-relay 10.32.1$k.129 10.32.$k.1 enable " >> outfile
    k=$((k+1))
done

aber viele alternative Formen würden auch funktionieren.

verwandte Informationen