Zsh: 확장하기 전에 파일이 존재하는지 확인하세요.

Zsh: 확장하기 전에 파일이 존재하는지 확인하세요.

Zsh 매개변수 확장에는 다음이 있습니다.

"${test_var:-"${HOME}/test"}"

${HOME}/test하지만 여기서는 그것이 존재하는지 확인하고 그렇지 않다면 (공간 문자열) test_var로 확장하고 싶습니다 ." "

이에 대한 인라인 솔루션이 있습니까?

답변1

echo ${test_var:-~/test(N)}

닫다. a (N)(여기서는 목록 컨텍스트에 있는 것처럼) 를 추가하면 ~/test(N)glob이 되고, glob 한정자 때문에 ( )에 디렉터리 항목이 N없으면 testglob이 비어 있게 확장됩니다.$HOME~

이는 한 공간의 논쟁이 아닌 무로 확장되기 때문에 요청하신 내용과 다릅니다.

이렇게 하려면 다음 단계를 수행하면 됩니다.

f=(~/test(N)); echo ${test_var:-${f:-' '}}

약간의 치트이긴 하지만 명령 대체를 사용할 수도 있습니다.

echo ${test_var:-"${$(printf %s ~/test(N)):-' '}"}

또는:

echo ${test_var:-"$((){<<<${1-' '}} ~/test(N))"}

관련 정보