awkコマンドでbashに引数を渡し、フィルタリングする

awkコマンドでbashに引数を渡し、フィルタリングする

以下の基本的なスクリプトをどのように改善すればよいか、助言をいただきたいと思います。

つまり、引数を bash に渡すことはできましたが、awk コマンドでより柔軟にすることは可能でしょうか?

コマンドでエラーが発生しました。1df -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

これにより、1 つのファイルシステムの出力が複数行にまたがらないようになります。

最終的なスクリプトは次のようになります

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

関連情報