반응형
쉘 스크립팅에서 논리 OR 연산을 수행하는 방법
간단한 상태 확인을하려고하는데 작동하지 않는 것 같습니다.
경우 $#
IS 같 0
거나보다 큰 경우 1
다음 인사.
성공하지 못한 채 다음 구문을 시도했습니다.
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
이것은 작동합니다.
#!/bin/bash
if [ "$#" -eq 0 ] || [ "$#" -gt 1 ] ; then
echo "hello"
fi
이것이 다른 셸에서 다른지 확실하지 않지만 <,>를 사용하려면 다음과 같이 이중 괄호 안에 넣어야합니다.
if (("$#" > 1))
...
이 코드는 나를 위해 작동합니다.
#!/bin/sh
argc=$#
echo $argc
if [ $argc -eq 0 -o $argc -eq 1 ]; then
echo "foo"
else
echo "bar"
fi
나는 sh가 "=="를 지원하지 않는다고 생각합니다. 문자열을 비교하려면 "="를 사용하고 int를 비교하려면 -eq를 사용하십시오.
man test
상세 사항은.
bash 종료 코드 상태 $?를 사용하는 경우 변수로 다음과 같이하는 것이 좋습니다.
if [ $? -eq 4 -o $? -eq 8 ] ; then
echo "..."
fi
다음과 같은 경우 :
if [ $? -eq 4 ] || [ $? -eq 8 ] ; then
수술실의 왼쪽 부분 을 변경합니다 $? 변수이므로 OR 의 오른쪽 부분에 원래 $ 가 없습니다 . 값.
때로는 이중 괄호를 사용해야합니다. 그렇지 않으면 너무 많은 인수와 같은 오류가 발생합니다.
if [[ $OUTMERGE == *"fatal"* ]] || [[ $OUTMERGE == *"Aborting"* ]]
then
fi
bash 스크립트 인 경우
If [[ $input -gt number || $input -lt number ]]
then
echo .........
else
echo .........
fi
exit
다음과 같은 것을 시도해 보셨습니까?
if [ $# -eq 0 ] || [ $# -gt 1 ]
then
echo "$#"
fi
#
($ #) 10 진수 위치 매개 변수 수로 확장됩니다.
따라서 $#
항상 0 또는 더 큰 정수입니다.
때마다 당신이 뭔가를하고 싶은 그런 경우 $#
중 하나를 0 또는 1보다 큰 경우, 당신은 단지 확인해야 $#
하거나하지 않습니다 1
:
[ $# -eq 1 ] && echo "1 positional param" || echo "0 or more than 1"
이것은 구문을 사용합니다.
[ condition ] && {things if true} || {things if false}
그리고 Bash에서
line1=`tail -3 /opt/Scripts/wowzaDataSync.log | grep "AmazonHttpClient" | head -1`
vpid=`ps -ef| grep wowzaDataSync | grep -v grep | awk '{print $2}'`
echo "-------->"${line1}
if [ -z $line1 ] && [ ! -z $vpid ]
then
echo `date --date "NOW" +%Y-%m-%d` `date --date "NOW" +%H:%M:%S` ::
"Process Is Working Fine"
else
echo `date --date "NOW" +%Y-%m-%d` `date --date "NOW" +%H:%M:%S` ::
"Prcess Hanging Due To Exception With PID :"${pid}
fi
또는 Bash에서
line1=`tail -3 /opt/Scripts/wowzaDataSync.log | grep "AmazonHttpClient" | head -1`
vpid=`ps -ef| grep wowzaDataSync | grep -v grep | awk '{print $2}'`
echo "-------->"${line1}
if [ -z $line1 ] || [ ! -z $vpid ]
then
echo `date --date "NOW" +%Y-%m-%d` `date --date "NOW" +%H:%M:%S` ::
"Process Is Working Fine"
else
echo `date --date "NOW" +%Y-%m-%d` `date --date "NOW" +%H:%M:%S` ::
"Prcess Hanging Due To Exception With PID :"${pid}
fi
참고URL : https://stackoverflow.com/questions/4111475/how-to-do-a-logical-or-operation-in-shell-scripting
반응형
'programing tip' 카테고리의 다른 글
숫자 만 허용하는 텍스트 상자는 어떻게 만듭니 까? (0) | 2020.10.04 |
---|---|
.key 및 .crt 파일에서 .pem 파일을 가져 오는 방법은 무엇입니까? (0) | 2020.10.04 |
Visual Studio Code 내에서 줄 또는 선택을 복제하려면 어떻게합니까? (0) | 2020.10.03 |
경로의 일부를 찾을 수 없습니다.… bin \ roslyn \ csc.exe (0) | 2020.10.03 |
Python 스크립트를 독립 실행 형으로 실행하여 종속성없이 실행하는 방법은 무엇입니까? (0) | 2020.10.03 |