一部のIPで失敗した場合

一部のIPで失敗した場合

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 ...

おすすめ記事