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))"}