bash 스크립트의 if 문에서 -f는 무엇을 의미합니까?

이 코드를 이해하기 :

if [ -f /etc/bashrc ]; then . /etc/bashrc fi 

잘 모르겠습니다. -f가 정확히 무엇을 의미하는지.

답변

이를 확인하기위한 관련 man 페이지는 쉘 자체의 페이지입니다. bash, -f는 셸이 제공하는 기능이므로 “bash 내장 기능입니다.

내 시스템에서 (CentOS 7), 훌륭한 맨 페이지에서 다룹니다. grep는 다른 배포에서 동일한 결과를 제공하지 않을 수 있습니다. 그럼에도 불구하고 man bash를 실행 한 다음 “-f”를 검색하면 필요한 결과를 얻을 수 있습니다.

$ man bash | grep -A1 "\-f file$" -f file True if file exists and is a regular file. $ 

답변

요컨대, 코드 조각은 /etc/bashrc 파일이있는 경우 소싱하고 존재 여부는 -f가 연산자 / 매개 변수 인 [ 명령으로 확인됩니다.

문은 명령의 종료 상태를 평가합니다. 성공시 0입니다. 따라서 다음과 같이하는 것이 적절합니다.

if ping -c 4 google.com; then echo "We have a connection!" fi 

귀하의 경우 명령은 [입니다. 이것은 test 명령으로도 알려져 있습니다. 따라서 수행하는 것이 “완벽하게 유효합니다.

if test -f /etc/bashrc; then . /etc/bashrc fi 

-f flag는 두 가지를 확인합니다. 제공된 경로가 존재하고 일반 파일입니다. /etc/bashrc가 실제로 디렉토리이거나 누락 된 경우 테스트는 실패를 알리기 위해 0이 아닌 종료 상태를 반환해야합니다.

이 명령은 원래 별도의 명령이었습니다. 쉘의 내장 명령의 일부입니다. 요즘에는 대부분의 Bourne과 같은 쉘이 내장 명령을 가지고 있으며 이것이 쉘이 사용할 것입니다.

참고로 /etc/bashrc는 관리자 또는 코드 스 니펫의 원래 작성자가 사용중인 불필요한 추가 파일처럼 보입니다. bash에 대한 시스템 전체 rc 파일로 사용되는 /etc/bash.bashrc가 있으므로이 파일이 사용될 것으로 예상합니다.

참조 :

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다