linux if else 对于某些 IP 失败

linux if else 对于某些 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只需在要调试的代码块的开头放置一个,当您想禁用它时,即可set +x

例子

... some code ...

set -x
... code to debug ...
set +x

... more code ...

相关内容