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に接続されていないことを意味します。