Übergeben von Argumenten an Bash mit dem Awk-Befehl zum Filtern

Übergeben von Argumenten an Bash mit dem Awk-Befehl zum Filtern

Ich möchte um Hilfe bitten, wie ich das folgende Basisskript verbessern kann.

Ich konnte also die Argumente an Bash übergeben, aber ist es möglich, meinen Awk-Befehl flexibler zu gestalten?

Ich habe einen Fehler im df -hBefehl festgestellt, bei dem 2 Zeilen für 1 Dateisystem angezeigt werden (es sollte eigentlich nur eine Zeile sein).

und dann zeigt das Skript nicht die korrekten Parameter an, da sich die Argumentnummern ( $6und $5) geändert haben.

Probe:

df -h

Filesystem                   Size            Used  Avail  Use% Mounted on
/dev/test/test2/test3        1.1G            100M  1G     1%   /test
/dev/test/test2/test3/test4
                          1.1G            100M  1G     1%   /tst2


$ cat myscript.sh
#!bin/bash

df -h "$@" | awk '{print $6,"=",$5}' | sed -n '1!p'

$ ./myscript.sh /test /tst2

Meine Ausgabe wird sein

/test=1%

=/tst2

aber sollte

/test=1%

/tst2=1%

Antwort1

Verwenden Sie stattdessen einfach dies und Sie müssen sich keine Gedanken über die Nachbearbeitung der dfAusgabe machen.

df -P

Dadurch wird sichergestellt, dass die Ausgabe für ein Dateisystem sich nicht über mehrere Zeilen erstreckt.

Ihr endgültiges Skript wird also sein

df -h -P "$@" | awk '{ print $6,"=",$5}' | sed -n '1!p'

verwandte Informationen