bash 스크립트의 조건인 경우 negate
다음 명령을 무시하려고 합니다.
wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -eq 0 ]]; then
echo "Sorry you are Offline"
exit 1
인터넷에 연결되어 있으면 이 if 조건이 true로 반환됩니다.나는 그것이 반대로 일어나기를 원하지만 퍼팅.!
아무데나 효과가 없는 것 같습니다.
선택할 수 있는 항목:
if [[ $? -ne 0 ]]; then # -ne: not equal
if ! [[ $? -eq 0 ]]; then # -eq: equal
if [[ ! $? -eq 0 ]]; then
!
다음 식의 반환을 각각 반전합니다.
낫다.
if ! wget -q --spider --tries=10 --timeout=20 google.com
then
echo 'Sorry you are Offline'
exit 1
fi
만약 당신이 게으르다면, 여기 조건을 다루는 간결한 방법이 있습니다.||
(또는) 및&&
(및) 수술 후:
wget -q --tries=10 --timeout=20 --spider http://google.com || \
{ echo "Sorry you are Offline" && exit 1; }
동일하지 않은 비교를 사용할 수 있습니다.-ne
대신에-eq
:
wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -ne 0 ]]; then
echo "Sorry you are Offline"
exit 1
fi
숫자를 비교할 때 산술 표현식을 사용할 수 있으므로 매개 변수를 보다 쉽게 처리하고 비교할 수 있습니다.
wget -q --tries=10 --timeout=20 --spider http://google.com
if (( $? != 0 )); then
echo "Sorry you are Offline"
exit 1
fi
대신 방법에 주목하십시오.-ne
그냥 사용할 수 있습니다.!=
산술적인 맥락에서, 우리는 심지어 앞에 추가할 필요도 없습니다.$
매개 변수, 즉,
var_a=1
var_b=2
(( var_a < var_b )) && echo "a is smaller"
완벽하게 잘 작동합니다.이는 다음에 적용되지 않습니다.$?
하지만 특별한 매개 변수.
더 나아가서는(( ... ))
0이 아닌 값을 true로 평가합니다. 즉, 0이 아닌 값에 대한 반환 상태는 0이고 반환 상태는 1입니다. 그렇지 않으면 다음으로 단축할 수 있습니다.
if (( $? )); then
하지만 이것은 저장된 키 입력의 가치보다 더 많은 사람들을 혼란스럽게 할 수 있습니다.
그(( ... ))
construct는 Bash에서 사용할 수 있지만 POSIX 셸 사양(가능한 확장으로 언급됨)에서 필요하지 않습니다.
이 모든 말이 나왔듯이, 이 모든 것을 피하는 것이 좋습니다.$?
콜의 대답과 스티븐의 대답처럼 모두 제 생각에 그렇습니다.
언급URL : https://stackoverflow.com/questions/26475358/negate-if-condition-in-bash-script
'programing' 카테고리의 다른 글
zure HTTP Trigger 기능을 실행하면 401이 인증되지 않습니다. (0) | 2023.05.23 |
---|---|
Mongoose 스키마에서 어레이 크기에 대한 제한을 설정하는 방법 (0) | 2023.05.23 |
WPF에서 버튼을 프로그래밍 방식으로 클릭하는 방법은 무엇입니까? (0) | 2023.05.23 |
Python - YYY-MM-DD 형식의 문자열로 어제 날짜 가져오기 (0) | 2023.05.23 |
Xcode의 "헤더 검색 경로"와 "사용자 헤더 검색 경로" 중 어느 쪽입니까? (0) | 2023.05.18 |