Zsh: "$x"가 비어 있는 경우 "${x:?}"가 0이 아닌 값을 반환하도록 만드는 방법은 무엇입니까?

Zsh: "$x"가 비어 있는 경우 "${x:?}"가 0이 아닌 값을 반환하도록 만드는 방법은 무엇입니까?

비어 있는 경우 ${x:?}반환 값을 0이 아닌 값으로 만들려면 어떻게 해야 합니까 $x? 기본적으로 셸(이 경우 하위 셸)을 종료합니다 0.

function sth() {
    local url="${1:?}"
...
}
(sth) ; echo $? # shows 0

업데이트: Stéphane Chazelas가 말했듯이 이는 대화형 사용에서만 발생합니다.

답변1

댓글에 설명된 대로 ${x:?}이 작업은 자체적으로 수행할 수 없습니다. 그러나 조건문을 사용하면 원하는 것을 쉽게 달성할 수 있습니다.

% sth() { [[ -n $1 ]] || return; local url="$1" }
% sth; print $?
1

관련 정보