Bash 조건: 표현식 "및" 방법은?([! -z $VAR & -e $VAR ]의 경우)
"그리고" 테스트를 어떻게 해야 할지 잘 모르겠군요.나는 잘 맞는 논쟁이 존재하는지 확인하고 싶었다.[ -e $VAR ]
그러나 빈 문자열에서도 true로 평가되고 있는 것을 알 수 있었습니다.
어떻게 하면 함께 할 수 있을까요?아니면 제가 원하는 것을 성취하는 단항 테스트가 또 있나요?
if [ ! -z "$var" ] && [ -e "$var" ]; then
# something ...
fi
에서bash
manpage:
[[ expression ]]
- 조건식의 평가에 따라 0 또는 1의 상태를 반환합니다.
식에 대한 옵션 중 하나는 다음과 같습니다.
expression1 && expression2
- 둘 다 맞는 경우expression1
그리고.expression2
사실이야.
그래서 할 수 있다and
다음과 같이 조합합니다.-n
와는 정반대이다-z
그래서 우리는 이 모든 것을 없앨 수 있다.!
):
if [[ -n "$var" && -e "$var" ]] ; then
echo "'$var' is non-empty and the file exists"
fi
하지만 이 경우에는 그럴 필요가 없다고 생각합니다.-e xyzzy
true가xyzzy
파일이 존재하며 빈 문자열을 쉽게 처리할 수 있습니다.그게 네가 원하는 거라면, 사실 넌 그런 거 필요 없어-z
비어 있지 않은 검사:
pax> VAR=xyzzy
pax> if [[ -e $VAR ]] ; then echo yes ; fi
pax> VAR=/tmp
pax> if [[ -e $VAR ]] ; then echo yes ; fi
yes
즉, 다음 명령어를 사용합니다.
if [[ -e "$var" ]] ; then
echo "'$var' exists"
fi
if [ -n "$var" -a -e "$var" ]; then
do something ...
fi
변수를 간단히 인용합니다.
[ -e "$VAR" ]
이 값은 다음과 같습니다.[ -e "" ]
한다면$VAR
비어 있습니다.
버전이 다음과 같이 평가되므로 작동하지 않습니다.[ -e ]
이 경우 bash는 단순히 단일 인수(-e
)는 공백이 아닌 문자열입니다.
manpage부터:
test 및 [인수의 수에 따라 일련의 규칙을 사용하여 조건식을 평가합니다.]...
인수 1개
이 식은 인수가 null이 아닌 경우에만 true입니다.
(또한 이 솔루션에는 공백이 포함된 파일 이름을 사용할 수 있는 이점이 있습니다.)
이제 답을 찾았어요.제안해 주셔서 감사합니다!
for e in ./*.cutoff.txt; do
if grep -q -E 'COX1|Cu-oxidase' $e
then
echo xyz >$e.match.txt
else
echo
fi
if grep -q -E 'AMO' $e
then
echo abc >$e.match.txt
else
echo
fi; done
그것에 대한 소감은요?두 번 그리핑하는 건 비효율적인 것 같지만, 효과가 있어...
언급URL : https://stackoverflow.com/questions/8920245/bash-conditionals-how-to-and-expressions-if-z-var-e-var
'programing' 카테고리의 다른 글
가로 세로 비율을 유지하면서 이미지 크기를 자동 조정하는 방법 (0) | 2023.04.08 |
---|---|
Bash에서 관련 어레이를 통해 반복하는 방법 (0) | 2023.04.08 |
파라미터의 큰따옴표 이스케이프 (0) | 2023.04.08 |
무제한 Bash 이력 (0) | 2023.04.08 |
파이프 출력 및 캡처 종료 상태(Bash) (0) | 2023.04.08 |