リダイレクトを使用せずにファイルにコマンド出力を書き込む

リダイレクトを使用せずにファイルにコマンド出力を書き込む

一部の情報をファイルに書き込む小さなbashスクリプトを作成する必要があります。ただし、RTM(リダイレクト演算子)をサポートしていない場所でスクリプトが呼び出されます。リダイレクト演算子が使用できないためです。私は同様のことを試しました:

#!/bin/bash
busers_var=$(busers -w name)
sed -i 'T a/"$busers_var"' alert.out

エラーが発生します。

sed: can't find label for jump to `a/"$busers_var"'

または以下を使用する場合:

sed -i "T a/$busers_var" alert.out

私は得る:

sed: -e expression #1, char 25: unknown command: `J'

どんなアイデアがありますか?

ベストアンサー1

busers -w name問題のコマンドの場合は、以下を試してくださいtee

busers -w name | tee /path/to/output

たぶんstderrを追加することができます:

busers -w name 2>&1 | tee /path/to/output

または以下を使用してくださいed

touch output; ed -s output <<< $'r !busers -w name\nwq'

または使用sort「ソートされたファイルをマージ、ソートしない」-o outputオプションと組み合わせる:

buser -w name | sort -m -o output

おすすめ記事