$log(txtファイル)に書き込んでから、ログファイルで「[1]」で始まるすべてのテキストを見つけて、別のファイルに保存するサーバーを実行しようとしています。これが私の試みです。tee -a $log
他のすべてと連携します。 grepコマンドはそうではありません。
run="tail -n0 -f -s 0.01 $cmds | (while true; do $tron --userconfigdir $userconfigdir --userdatadir $userdatadir --vardir $var; done) | tee -a $log | grep '^[1]' > ${var}logs/chatlogs.log"
tee -a $log
「[1]」から始まるすべてのテキストを別のファイルにコピーするにはどうすればよいですか?
ベストアンサー1
コマンドを文字列に入れないでください。複合コマンドを定義する方法は関数です。
その後、シェルプログラミングの最も重要なルールを覚えておいてください。つまり、変数の置換には常に二重引用符を入れてください(例:)"$foo"
。
次のコードがあります(変数cmds
、、、log
によって異なります)。tron
userconfigdir
userdatadir
var
run () {
tail -n0 -f -s 0.01 "$cmds" |
while true; do
"$tron" --userconfigdir "$userconfigdir" --userdatadir "$userdatadir" --vardir "$var"
done |
tee -a "$log" |
grep '^[1]' > "${var}logs/chatlogs.log"
}
これでコードが読める形式なので、$tron
無限ループで実行されていることがわかります。正確に何をしたいのかわかりませんが、そのループに終了条件を追加する必要があります。