
Zsh 매개변수 확장에는 다음이 있습니다.
"${test_var:-"${HOME}/test"}"
${HOME}/test
하지만 여기서는 그것이 존재하는지 확인하고 그렇지 않다면 (공간 문자열) test_var
로 확장하고 싶습니다 ." "
이에 대한 인라인 솔루션이 있습니까?
답변1
echo ${test_var:-~/test(N)}
닫다. a (N)
(여기서는 목록 컨텍스트에 있는 것처럼) 를 추가하면 ~/test(N)
glob이 되고, glob 한정자 때문에 ( )에 디렉터리 항목이 N
없으면 test
glob이 비어 있게 확장됩니다.$HOME
~
이는 한 공간의 논쟁이 아닌 무로 확장되기 때문에 요청하신 내용과 다릅니다.
이렇게 하려면 다음 단계를 수행하면 됩니다.
f=(~/test(N)); echo ${test_var:-${f:-' '}}
약간의 치트이긴 하지만 명령 대체를 사용할 수도 있습니다.
echo ${test_var:-"${$(printf %s ~/test(N)):-' '}"}
또는:
echo ${test_var:-"$((){<<<${1-' '}} ~/test(N))"}