쉘 if 문에서 여러 조건을 결합하고 조합을 무효화하고 싶습니다. 간단한 조건 조합을 위해 다음 작업 코드가 있습니다.
if [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ; then
# do stuff with the files
fi
이것은 잘 작동합니다. 그것을 부정하고 싶다면 다음 작업 코드를 사용할 수 있습니다.
if ! ( [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ) ; then
echo "Error: You done goofed."
exit 1
fi
# do stuff with the files
이것은 예상대로 작동합니다. 그러나 괄호가 실제로 무엇을하는지 모르겠습니다. 내가 원하는 단지 그룹화를 사용하지만 실제로 서브 쉘을 산란한다? (어떻게 알 수 있습니까?) 그렇다면 서브 쉘을 생성하지 않고 조건을 그룹화하는 방법이 있습니까?
if [[ ! -f file1 ]] && [[ ! -f file2 ]]; then
if [ ! 1 -eq 2 ] && [ ! 2 -eq 3 ]; then echo yep; fi
했으며 작동합니다. 나는 습관적으로 항상 이중 괄호로 테스트를 작성합니다. 또한 그것이 아닌지 확인하기 위해 bash
추가 테스트를 거쳐 if /bin/test ! 1 -eq 2 && /bin/test ! 2 -eq 3 ; then echo yep; fi
그 방식으로 작동합니다.
[ ! -e file/. ] && [ -r file ]
디렉토리를 삭제합니다. 당신이 원하는대로 그것을 부정하십시오. 물론 -d
그렇습니다.
if ! [ -f file1 ] || ! [ -f file 2 ] || ! [ -f file3 ] ; then
그러나 더 일반적인 대답을 원합니다.