-r 파일 이름&& .파일 이름

-r 파일 이름&& .파일 이름

방금 스크립트 작업을 하고 있었는데 이 줄을 발견했습니다. 누구든지 이 줄이 무엇을 하는지 말해 줄 수 있나요? 이것은 코드 줄입니다.

[ -r "$PosConfigDir/posconfig.sh" ] && . "$PosConfigDir/posconfig.sh"

답변1

심볼릭 링크가 해결된 후 r파일을 읽을 수 있는 권한이 있는지 확인합니다 .$PosConfigDir/posconfig.sh원천그 파일.

파일을 읽을 수 있다고 보장하지는 않습니다. 예를 들어 대부분의 시스템에서는 [ -r / ]true가 반환되지만읽다 /.

-r표준 테스트 연산자.

.인수로 주어진 파일의 코드를 읽고 해석하도록 쉘에 지시하는 Bourne 유사 쉘의 특수 내장 명령입니다. source는 의 해당 명령입니다 csh. 많은 현대 Bourne형 쉘은 source이것을 ..

.일부 셸 구현의 경우 파일을 열거나 읽지 못하면 셸이 중단됩니다(오류 메시지 인쇄 후). 이 -r점검은 아마도 이러한 일이 발생하는 것을 방지하기 위한 것입니다.

쉘이 중단되는 것을 방지하기 위해 POSIX 쉘에서 대안은 다음과 같습니다.

 command . "$PosConfigDir/posconfig.sh"

zshsh(위의 구성은 in 이나 에뮬레이션을 제외하고는 작동하지 않지만 ksh)

오류 메시지를 방지하려면 stderr 출력을 stderr 로 리디렉션해야 /dev/null하지만 이는 의 명령에서 오류도 제거하는 원치 않는 부작용이 있습니다 postconfig.sh.

한 가지 예:

$ [ -r /etc/os-release ] && . /etc/os-release
$ printf '%s\n' "$PRETTY_NAME"
Debian GNU/Linux 8 (jessie)

PRETTY_NAME/etc/os-release파일에 정의되어 있습니다:

$ head -n 1 /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"

관련 정보