이것이 멍청한 질문이라면 죄송하지만 성공하지 않고 검색했습니다.
두 번째 줄은 정확히 무엇을합니까? :
#!/bin/sh
cd ${0%/*} || exit 1
첫 번째는 shebang이고 두 번째는 디렉토리를 변경하려고 시도하지만 혼란스러운 부분은 ${0%/*}
입니다.
그 두 번째 줄을 설명해 주시겠습니까?
답변
${0}
스크립트의 첫 번째 인수입니다 (예 : 스크립트 이름 또는 경로). 로 스크립트를 시작하면 정확히 path/to/script.sh
다음 과 같은 ${0}
문자열이 path/to/script.sh
됩니다.
이 %/*
부분은의 값을 수정합니다 ${0}
. /
파일 이름 이 올 때까지 모든 문자를 가져 옵니다. 위의 예에서는 ${0%/*}
입니다 path/to
.
쉘에서 작동하는 것을 볼 수 있습니다.
$ x=path/to/script.sh
$ echo "${x%/*}"
path/to
Sh는 다른 많은 종류의 “매개 변수 대체”를 지원합니다. 예를 들어 경로 대신 파일 이름을 사용하는 방법은 다음과 같습니다.
$ echo "${x##*/}"
script.sh
일반적으로 %
및 %%
스트립 접미사 동안 #
및 ##
스트립 프리픽스. 매개 변수 대체 에 대해 자세히 읽을 수 있습니다 .