그래서 나는 내 자신의 오류 처리를해야하고 문제가 발생하고 있으며 아래 코드가 문제를 일으키고 있습니다.
sbalert -t "Checking" -m "Checking for updates please wait" -d "" &
alert_id="$!"
ping -c 1 repod00r.com || kill $alert_id && sbalert -t "Connection error" -m "Unable to connect to the update server." && exit
ping이 때마다 성공 또는 실패 나 오류 처리기가 발생 얻고 나는 닫으면 화면에 다시 나타납니다 그것을 살해되어 있어야합니다.sbalert
sbalert -t "Checking" -m "Checking for updates please wait" -d ""
나는 이미 이것을 시도하고 수정하기 위해 오류 처리의 세 부분을 재정렬하려고 시도했습니다. 그러나 아무 소용이 없습니다 ...
나는 약간 멍청 하니까 대답이 얼굴을 때리면 미안해 ...
배쉬에서, 커넥터 ||
와는 &&
단순히 왼쪽에서 오른쪽으로 실행됩니다. ||
더 높은 우선 순위가 없습니다.
작동 방식을 확인하려면 다음을 시도하십시오.
true || echo 1 && echo 2
false || echo 1 && echo 2
false || false && echo 1 && echo 2
그래서 당신이 할 때 : (간체)
ping || kill $alert_id && sbalert && exit
kill
(가) 경우에만 실행하는 ping
실패,하지만 sbalert
실행 중 경우 ping
또는이 kill
성공하고, exit
실행하는이 경우 sbalert
실행 및 성공했다.
따라서 ping
성공하면 두 번째 sbalert
는 실행되지만 원본 sbalert
은 죽지 않을 것입니다.
if
문장을 사용 하면 코드를 읽고 쓰기가 더 쉽습니다 .
sbalert -t "Checking" -m "Checking for updates please wait" -d "" &
alert_id=$!
if ! ping -c 1 repod00r.com; then
kill $alert_id
sbalert -t "Connection error" -m "Unable to connect to the update server."
exit
fi
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다