Bash 셸 스크립트에 파일 또는 디렉터리가 있는지 확인하는 방법

Bash 스크립트에서 파일 또는 디렉토리가 있는지 확인

Bash는 Linux에서 정기적으로 실행되는 명령을 자동화하는 데 사용됩니다. 파일/디렉토리에 대한 작업을 위한 명령은 매우 자주 사용되며 일반적으로 이러한 명령을 실행하기 전에 특정 파일이나 디렉토리가 존재하는지 확인해야 합니다. 이 검사를 수행하는 방법을 살펴보겠습니다.

구문 및 사용법

파일

파일이 존재하는지 확인하려면, 다음 구문을 사용합니다.

[ -f ]

표현식 [ -f ] 0을 반환합니다. 존재하고 존재하지 않으면 0이 아닌 상태를 반환합니다. 일반적으로 이것은 조건으로 사용됩니다. 만약 성명.

[ -f ]이면 fi

반환된 값을 부정하려면, 단순히 앞에 -에프 부정 연산자(!).

만약 [ ! -f ] 그런 다음 fi

이 경우 파일이 다음과 같은 경우 조건이 충족됩니다. 존재하지 않는다, 반환된 0이 아닌 상태(거짓)는 무효화되고 0(참)으로 간주됩니다.

확인하고자 하는 파일이 현재 디렉토리에 존재하지 않고 다른 디렉토리에 존재한다면, 파일명만이 아니라 파일의 전체 경로를 언급해야 합니다.

디렉토리

파일 검사에 사용되는 것과 유사한 구문이 디렉토리 검사에 사용됩니다.

[ -d ]

파일에 대한 명령문과 유사하게 이 명령문은 0을 반환합니다. 존재하고 0이 아닌 경우, 즉 존재하지 않는 경우 실패 상태가 반환됩니다. 이것은 또한 일반적으로 만약 진술 조건.

[-d]이면 fi

반환된 상태를 무효화하려면 -디 부정 연산자(!).

만약 [ ! -d ] 그런 다음 fi

조건은 이 경우 디렉토리가 존재하지 않으면 충족되고(상태 0), 디렉토리가 존재하면 실패합니다(0이 아닌 상태).

앞서 파일에 대해 언급했듯이 검사할 디렉토리가 현재 디렉토리가 아닌 다른 위치에 존재한다면 디렉토리명만 입력하는 것이 아니라 전체 디렉토리 경로를 입력해야 한다.

💡 대괄호 구문( [...] ) 여기에 사용된 것은 실제로 라는 Linux 명령입니다. 테스트. 옵션 -에프 그리고 -디 이 명령의 기능입니다. 자세한 내용은 테스트 매뉴얼 페이지( 남자 테스트 ).

Bash 스크립트에서 확인

위의 예에서는 터미널에서 직접 구문을 사용했습니다. 쉘은 루프나 조건문(만약 이 경우) 프롬프트를 계속하고 사용자가 계속 블록을 입력할 수 있도록 합니다.

Bash 스크립트 내부에서 동일한 구문을 사용할 수 있습니다.

그만큼 #!/bin/bash 시작 시 파일이 실행될 때 사용할 인터프리터를 지정합니다. Bash는 오늘날 가장 일반적으로 사용되는 셸이지만 일부 사용자는 다음과 같은 셸을 선호합니다. zsh, 이 파일의 시작 부분에서 bash 대신 지정해야 합니다.

실행 권한을 부여하려면 이 파일에 대해 다음을 실행합니다.

chmod +x test.sh

드디어, 파일을 실행하기 위해, 운영:

./test.sh