可能ですか?
コマンドを実行したいのですが、stdoutとstderrを別々の変数としてキャプチャしたいと思います。現在私はset -l var (cmd)
stderrを変更せずにそのまま維持するthisを使用しています。 stdoutとstderrをvarにマージすることはできますが、set -l var (cmd ^&1)
再び簡単に分離することはできません。
varとvar_errにcmdにstdoutとstderrを保存させる方法はありますか?
ベストアンサー1
begin; cmd ^|read -z err; end |read -z out
~から魚の皮/魚の殻#2463、
Fish の例の 1 つの問題は [read] の [cmd] と [stdout] をリダイレクトするので、後者が何でも印刷するとパイプされます。
しかし、一般的な状況では、readが何も印刷してはならないと思います(特にstdoutで)。したがって、大丈夫でしょう。
編集する:正確なセマンティクスが必要な場合は、以下を使用してこれを達成できますset var (cmd)
。set var (printf '%s' $out)
set var_err (printf '%s' $err)