echo ${test_var:-~/test(N)}
chega perto. Adicionando um (N)
(e aqui como estamos no contexto de lista), esse ~/test(N)
se torna um glob e, por causa disso, qualificador N
glob, se não houver nenhuma entrada de diretório test
em $HOME
( ~
), então a glob expande-se para nada.
Isso é diferente do que você está perguntando, pois ele se expande para nada, em vez de um argumento de espaço único.
Para isso, você ainda pode fazer isso nas etapas:
f=(~/test(N)); echo ${test_var:-${f:-' '}}
Você também pode usar a substituição de comandos, embora isso seja um pouco trapaceiro:
echo ${test_var:-"${$(printf %s ~/test(N)):-' '}"}
Ou:
echo ${test_var:-"$((){<<<${1-' '}} ~/test(N))"}