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~

これは、1つのスペースの議論ではなく、無に拡張されるため、要求されたものとは異なります。

これを行うには、次の手順を実行します。

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

ちょっとしたチートですが、コマンド置換を使用することもできます。

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

または:

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

関連情報