Я хотел бы попросить вас помочь мне улучшить базовый скрипт, представленный ниже.
Итак, мне удалось передать аргументы в 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'