Передача аргументов в bash с помощью команды awk для фильтрации

Передача аргументов в bash с помощью команды awk для фильтрации

Я хотел бы попросить вас помочь мне улучшить базовый скрипт, представленный ниже.

Итак, мне удалось передать аргументы в bash, но можно ли сделать мою команду awk более гибкой?

Я обнаружил ошибку в df -hкоманде, где она показывает 2 строки для 1 файловой системы (должна быть только одна строка)

и затем скрипт не отображает правильные параметры, так как номера аргументов ( $6и $5) изменились.

Образец:

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

Мой вывод будет

/test=1%

=/tst2

но должно быть

/test=1%

/tst2=1%

решение1

Просто используйте это, и вам не придется беспокоиться о постобработке вывода df.

df -P

Это гарантирует, что вывод для одной файловой системы не будет занимать несколько строк.

Итак, ваш окончательный сценарий будет

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

Связанный контент