
if thenをインストールするには、次のコードを使用しています。一部のIPでは機能しますが、一部のIPでは機能しません。特に FAILURE 文では機能しません。
これはコードです
is_mounted() {
mount | grep -qohw "$1"
}
{
pass=
for ip in 123.456.789 223.456.789
do
if is_mounted "$ip"
then
echo -e " STACK MOUNT \e[1;33mALREADY\e[00m AVAILABLE \e[1;33mPASSED\e[00m "
pass=1
break
fi
mount -t nfs -o ro,nolock "$ip:/opt/media/" /mount/stack &>/dev/null
if is_mounted "$ip"
then
echo -e " STACK MOUNT AVAILABLE \e[1;33mPASSED\e[00m "
pass=1
break
fi
done
[ "$pass" ] || echo -e " STACK MOUNT NOT AVAILABLE \e[00;31mFAILED\e[00m"
} | tee /tmp/log
これは失敗したIP 139.41.170.10、197.21.82.10、139.41.170.11、197.21.82.11、139.31.125.11です。理想的には、すべてのIPで動作する必要があります。私もこのIPをすべて使いたい139.41.170.10 197.21.82.10 139.41.170.11 197.21.82.11 139.31.125.11 IPの場合'。すべてのAWK提案。
答え1
関数でis_mounted
出力をテストしてmount
何かが返されることを確認し、それに応じて0または1を返す必要があります。
また、組み込みのデバッグツールを使用することをお勧めしますbash
。私たちがデバッグするようにしておくのではなく、何が問題なのかをすばやく見つけることができます。
set -x
デバッグしたいコードブロックの先頭に1つだけ配置してくださいset +x
。
はい
... some code ...
set -x
... code to debug ...
set +x
... more code ...