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