オペレーティング・システム: AIX 7100-04-1216
したがって、基本的に私はシステムにどのボリュームグループがあるのか、そのボリュームグループにどのファイルシステムがあるのか、各ファイルシステムのサイズを確認するためにforループを作成しようとしています。
次のコードがあります。
for LINE in `lsvg` ; do
echo "Volume Group: "${LINE}
for LINE2 in `lsvgfs ${LINE}` ; do
echo "`lsvgfs ${LINE}` \n"
df -g ${LINE2}
done
done
lsvgの出力
rootvg
nimvg
lsvgfsの出力(rootvg用)
/
/usr
lsvgfs出力(nimvg用)
/export/nim/lpp_source
/export/nim/spot
df -g出力(ボリュームグループrootvgの/について)
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/hd4 5.25 2.86 46% 9957 2% /
df -g出力(ボリュームグループrootvgの/ usrについて)
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/hd2 2.00 0.17 92% 43194 50% /usr
df -g出力(ボリュームグループnimvgの/export/nim/lpp_sourceの場合)
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/fslv02 10.00 8.24 18% 597 1% /export/nim/lpp_source
df -g出力(ボリュームグループnimvgの/export/nim/spot)
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/hd4 5.25 2.86 46% 9957 2% /
やるべきこと:
Volume Group: rootvg
File System: /
/dev/hd4 5.25 2.86 46% 9957 2% /
File System: /usr
/dev/hd2 2.00 0.17 92% 43194 50% /usr
File System: /var
Volume Group: nimvg
File system: /export/nim/lpp_source
/dev/fslv02 10.00 8.24 18% 597 1% /export/nim/lpp_source
File system: /export/nim/spot
/dev/hd4 5.25 2.86 46% 9957 2% /
私が得るもの:
Volume Group: rootvg
/
/usr
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/hd4 5.25 2.86 46% 9957 2% /
/
/usr
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/hd2 2.00 0.17 92% 43194 50% /usr
Volume Group: nimvg
/export/nim/lpp_source
/export/nim/spot
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/fslv02 10.00 8.24 18% 597 1% /export/nim/lpp_source
/export/nim/lpp_source
/export/nim/spot
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/hd4 5.25 2.86 46% 9957 2% /
答え1
まず、スタイルに関する注意事項です。for
ループを使用して出力行を繰り返すのは良い考えではありません。ループはfor
入力をスペースに分割するので、1行に複数の単語がある場合、各単語を異なる変数に分割します。while
スペースをよりエレガントに処理するので、それを使用する必要があります。また、を$(command)
使用することが好ましい場合が多いです`command`
。
しかし、これはあなたの問題ではないかもしれません。主な問題は、lsvgfs ${LINE}
各結果行の結果をエコーすることですlsvgfs ${LINE}
。
for LINE2 in `lsvgfs ${LINE}` ; do
echo "`lsvgfs ${LINE}` \n"
done
もちろん、次の行は2回表示されます。
/
/usr
この試み:
lsvg | while read LINE; do
echo "Volume Group: ${LINE}"
lsvgfs "${LINE}" | while read LINE2; do
echo "File System: ${LINE2}"
df -g ${LINE2}
done
echo ""
done