2

私が行った場合:

$(blah) bleh

私は得る

zsh: command not found: blah
zsh: command not found: bleh

blehこれは、コマンドとして意図されていないzsh が実行されていることを意味するため、少し心配です。それがたまたま実行可能で、私が望んでいないことをした場合はどうなりますか?

失敗した瞬間にライン全体を失敗させる方法はありblahますか?

4

2 に答える 2

2

試行された理由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
于 2014-02-17T21:43:02.453 に答える