Bash:コマンド出力をSTDOUTと変数にリダイレクトする

Bash:コマンド出力をSTDOUTと変数にリダイレクトする

Bashスクリプトでは、コマンド出力を変数にリダイレクトし、同時にバッファリングされていない出力を端末にストリーミングする必要があります。

私はこれを試しました:

output=$(command 2>&1 | tee "$(tty)")

しかし、これは端末に何も出力しません。

私も試しました

mytty=$(tty)
output=$(command 2>&1 | tee $mytty)

これにより、「tee:/dev/tty1:権限が拒否されました」というエラーが発生しました。

現在、オペレーティングシステムはOpenSUSE 15.0であり、sudo / root権限がありません。

答え1

努力する

... | tee /dev/tty

良い:

output=$( command 2>&1 | tee /dev/tty )

このコマンドはttyパイプライン内では機能しません。

$ echo $(tty)           # or (a lot better) simply:  tty
/dev/pts/4

$ echo aa | echo $(tty)
not a tty

これは、パイプの右側がttyに接続されていないことを意味します。

関連情報