현재 스크립트를 기반으로 한 스크립트가 있습니다. 그 사람이 왜 거기 있는지 이해가 안 돼요 typeset result part dir=${1-$PWD}
.
그냥 쓰면 같은 결과가 나옵니다 dir=$PWD
. 타이포그래피 ${1-$PWD}
는 ?dir
$PWD
답변1
이것은 중괄호 확장이 아니라 표준 매개변수 확장 연산자(70년대 Bourne 쉘로 거슬러 올라갑니다)입니다.
${1-$PWD}
$1
설정되면( $#
엄격히 0보다 큰 경우) 빈 문자열까지 (첫 번째 위치 인수)의 값으로 확장되고, $PWD
그렇지 않으면 변수의 내용으로 확장됩니다.
달리기:
info zsh 'Parameter Expansion'
더 알아보기.
typeset
Bourne도 아니고 POSIX도 아니지만 zsh
구체적이지도 않습니다. 이는 Korn 쉘(80년대 초반)에서 왔으며 변수의 범위를 현재 함수로 제한하는 데 사용됩니다. 이는 bash
및 에도 나타납니다 yash
.
달리기:
info zsh typeset
더 알아보기.
답변2
${1-$PWD}
쉘 매개변수 확장 모드입니다.
이는 다른 항목(오른쪽에 있는 항목)을 기반으로 기본값으로 확장하는 데 사용됩니다 -
. 귀하의 경우에는 다음과 같습니다.
설정하지 않으면
$1
확장 프로그램이$PWD
대체됩니다.그렇지 않은 경우, 즉
$1
임의의 값(null 포함)으로 설정된 경우 해당 값은 확장 결과로 사용됩니다.
예:
% echo "Foo${1-$PWD}"
Foo/home/bar
% set -- Spam
% echo "Foo${1-$PWD}"
FooSpam
답변3
$1
값을 테스트하기 위해 before를 사용합니다 $PWD
.