0
私はサーバ的なことを試みましたが、なぜ '行10'が '行9'の前に実行されるのか理解できません。9行目の出力の前にこの印刷行が印刷されるのはなぜですか?
実際のコード:
df -PH | grep -vE '^Filesystem|tmpfs|cdrom|loop' | awk '{ print $5 " " $1 " " $6}' | while read output;
do
proc=$(echo $output | awk '{ print $1}' | cut -d'%' -f1)
partition=$(echo $output | awk '{ print $2 }')
mountp=$(echo $output | awk '{ print $3 }')
ohostn=$(checkOtherHostname)
if [ $proc -ge $THRESHOLD_HD ]; then
printf "%20s [%6s] [%20s] %4s%% \"%s\"\n" "$(hostname)" "$ohostn" "$mountp" "$proc" "$partition"
sudo du -sh $mountp/*
fi
done
結果は以下のOUTPUTです。
その後、最初のif文の下に2番目のif文を入れて別の方法で試してみました。その中でsudoコマンドを動かしたところ、出力は同じでした!
df -PH | grep -vE '^Filesystem|tmpfs|cdrom|loop' | awk '{ print $5 " " $1 " " $6}' | while read output;
do
proc=$(echo $output | awk '{ print $1}' | cut -d'%' -f1)
partition=$(echo $output | awk '{ print $2 }')
mountp=$(echo $output | awk '{ print $3 }')
ohostn=$(checkOtherHostname)
if [ $proc -ge $THRESHOLD_HD ]; then
printf "%20s [%6s] [%20s] %4s%% \"%s\"\n" "$(hostname)" "$ohostn" "$mountp" "$proc" "$partition"
fi
if [ $proc -ge $THRESHOLD_HD ]; then
sudo du -sh $mountp/*
fi
done
OUTPUT:
1.1T /data/svn_repo_01/repos
16K /data/svn_repo_01/lost+found
2.7G /data/svn_repo_01/csvn
4.0K /data/svn_repo_01/migration
4.0K /data/svn_repo_01/tmp
vmappp21 [svntoy] [ /data/svn_repo_01] 70% "/dev/sde1"
これは役立つかもしれない:[bashスクリプトをデバッグする方法は?](http://unix.stackexchange.com/q/155551/74329) – Cyrus