私が行った場合:
$(blah) bleh
私は得る
zsh: command not found: blah
zsh: command not found: bleh
bleh
これは、コマンドとして意図されていないzsh が実行されていることを意味するため、少し心配です。それがたまたま実行可能で、私が望んでいないことをした場合はどうなりますか?
失敗した瞬間にライン全体を失敗させる方法はありblah
ますか?
私が行った場合:
$(blah) bleh
私は得る
zsh: command not found: blah
zsh: command not found: bleh
bleh
これは、コマンドとして意図されていないzsh が実行されていることを意味するため、少し心配です。それがたまたま実行可能で、私が望んでいないことをした場合はどうなりますか?
失敗した瞬間にライン全体を失敗させる方法はありblah
ますか?
試行された理由bleh
は、存在しない$(blah)
場合は空の文字列に置き換えられるためです。blah
その場合bleh
、完全に解析されたコマンドラインの最初の単語になり、コマンドとして解釈されて使用されます。
したがって、空の文字列をキャッチして、それ以上実行されないようにする必要があります。ありがたいことに、ZSH にはパラメーター拡張があります。つまり${name:?word}
、その場合にのみ使用できます。
${$(blah):?No such thing} bleh
blah
が存在しない場合、ZSH は出力しNo such thing
てプロンプトに戻ります (非対話型の場合はシェルを終了します)。
zsh: : No such thing
それ以外の場合は、置換されたコマンドのみになります
% alias blah="echo echo '>>>'"
% ${$(blah):?No such thing} bleh
>>> bleh