teeとgrep(シェル)を同時に使用しますか?

teeとgrep(シェル)を同時に使用しますか?

$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によって異なります)。tronuserconfigdiruserdatadirvar

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無限ループで実行されていることがわかります。正確に何をしたいのかわかりませんが、そのループに終了条件を追加する必要があります。

おすすめ記事