シェルスクリプトの出力を変数に保存する

シェルスクリプトの出力を変数に保存する

このトピックについて多くのスレッドを読みましたが、どのソリューションも私には役に立ちませんでした。

私は次のことをしようとしています:

RELEASE_COMMAND_OUTPUT=$(exec ~/temp/execs/github-release release --user patick --repo $REPO_NAME --tag $RELEASE_VERSION --name $RELEASE_VERSION --description "$DESC")

ただし、出力は変数./github-releaseに保存されませんRELEASE_COMMAND_OUTPUT

私はその概念を知っています。コマンドの置き換えしかし、私が試した解決策のどれも効果がありませんでした。私は何が間違っていましたか?

ベストアンサー1

あなたの質問の説明で説明したように、変数RELEASE_COMMAND_OUTPUTSTDOUT(標準出力)あなたの命令ではありませんが、STDERR (標準エラー)、これがあなたの場合のようです。

コマンドの出力が疑わしい場合は、次を使用できます。プロセスの交換到着STDERR赤で表示しておきます次の例に示すように:

command 2> >(while read line; do echo -e "\e[01;31m$line\e[0m" >&2; done)

これはリダイレクト2>部分)ブロックへの入力としてSTDERR端子に赤で印刷されます。commandwhile

逆にしてSTDOUT赤で表示することもできます。

command | grep .

grepは以下でのみ動作するためSTDOUT

ノート: 一部のシステムでは必要な場合があります。色を有効にするgrepでフラグを使用してください--color=auto。 Macos と Linux では通常、デフォルトで有効になっています。

おすすめ記事