Zシェルからサブプロセス結果を取得する

Zシェルからサブプロセス結果を取得する
AAA <options>; CCC AAA <options>

AAACCC別のコマンドです。

ここにzshスクリプトがあります。たとえば、次のようになります。

vi script.zsh
<...>
AAA <options>; CCC AAA <options>
<...>

詳細:私が間違っている場合はCCC AAA <options>訂正AAA <options>してください。サブシェルを使用してから、現在のシェルで別々のプロセスを作成するか、現在のシェルを使用してプロセスでサブプロセスを作成することができます。現在スクリプトを実行しています。

問題は完成CCC後も生き残るという点だ。script.zshこれにより、戻り値の代わりに結果を呼び出そうとすると問題が発生します。 (完了後に何かを作成します。ie用に新しく作成されたオブジェクトです。CCC AAA <options>AAA <options> ~へ script.zshnot found警告を発します。

しかし、script.zsh現在の結果をどのように見ることができますか'AAA <options>'

可能であれば、Zシェルを目指してください。

編集:次のようにする必要があります。

AAA <options>; CCC AAA <options>

答え1

いいえ、

CCC 'AAA <options>'

CCCリテラルパラメータで始まりますAAA <options>。すべての殻は同じです。echo代わりに、次のコマンドを使用できますCCC

$ echo 'AAA <options>'
AAA <options>

CCC出力(末尾の改行なし)を単一の引数AAAとして呼び出すには、次のようにします。

CCC "$(AAA <options>)"

CCC出力にできるだけ多くの単語(スペース、タブ、改行、NUL区切り文字)を使用して呼び出すには、AAA次のようにします。

CCC $(AAA <options>)

それにもかかわらず、returnCCCの前には開始されず、AAAスクリプトはCCCreturnの前には終了しません。

コマンドが返される前にスクリプトを終了するには、次のようにコマンドを非同期的に開始する必要があります。

CCC args &

とにかく、これはすべてのシェルで同じであり、具体的ではzshありません(上記のNUL分割を除く)。

関連情報