반응형
셸 스크립팅에서 정수 비교를 위한 논리적 OR 작업을 수행하는 방법은 무엇입니까?
간단한 상태 확인을 하려고 하는데 안 되는 것 같아요.
한다면$#
와 동등하다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 exit code status $?를 변수로 사용하는 경우 다음을 수행하는 것이 좋습니다.
if [ $? -eq 4 -o $? -eq 8 ] ; then
echo "..."
fi
만약 그렇다면:
if [ $? -eq 4 ] || [ $? -eq 8 ] ; then
OR의 왼쪽 부분은 $? 변수를 변경하므로 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
From Bash 참조 설명서 → 3.4.2 특수 매개 변수
#
($#) 위치 파라미터의 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에서의 OR
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-for-integer-comparison-in-shell-scripting
반응형
'programing' 카테고리의 다른 글
iOS 8에서 탐색 모음, 색조 및 제목 텍스트 색상 (0) | 2023.04.16 |
---|---|
WPF ComboBox에서 선택한 항목에 드롭다운 부분의 항목과 다른 템플릿을 사용할 수 있습니까? (0) | 2023.04.16 |
Go에서 int 값을 문자열로 변환하려면 어떻게 해야 합니까? (0) | 2023.04.16 |
단일 인스턴스 WPF 응용 프로그램을 만드는 올바른 방법은 무엇입니까? (0) | 2023.04.16 |
Python에서 범위를 벗어난 인덱스 기본값 가져오기 (0) | 2023.04.16 |