フィルタリングには、awkコマンドを使用してbashにパラメータを渡します。

フィルタリングには、awkコマンドを使用してbashにパラメータを渡します。

以下の基本スクリプトを改善する方法について助けを求めたいと思います。

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

コマンドにエラーが発生しましたdf -h。 2行のファイルシステムが1つ表示されます(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'

おすすめ記事