Tuyen Pham Asked: 2018-11-27 19:20:26 +0800 CST2018-11-27 19:20:26 +0800 CST 2018-11-27 19:20:26 +0800 CST Zsh:扩展前检查文件是否存在 772 在 Zsh 参数扩展中,我有: "${test_var:-"${HOME}/test"}" 但在这里我想检查是否${HOME}/test存在,如果不存在则test_var扩展为" "(一个空格字符串)。 有没有内联解决方案? zsh variable-substitution 1 个回答 Voted Best Answer Stéphane Chazelas 2018-12-03T07:59:45+08:002018-12-03T07:59:45+08:00 echo ${test_var:-~/test(N)} 接近。通过添加一个(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))"}
接近。通过添加一个
(N)
(这里就像我们在列表上下文中一样),它~/test(N)
变成了一个 glob,并且由于该glob 限定符,如果( ) 中N
没有test
目录条目,则 glob 将扩展为空。$HOME
~
这与您所要求的不同,因为它根本没有展开,而不是一个空格的论点。
为此,您仍然可以按以下步骤进行操作:
您也可以使用命令替换,尽管这有点作弊:
或者: