質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Q&A

解決済

2回答

690閲覧

Bashでコマンドの出力結果をgrepしたらバグる

SatoKenta

総合スコア38

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

0グッド

0クリップ

投稿2022/12/18 02:00

事象

Redisのコマンドredis-cli info replicationの出力をgrepしてroleを取得したいです。

# Replication role:master <- これを取得したい connected_slaves:0 master_failover_state:no-failover master_replid:113aa4a6dcb0eb0b11b9c2516712d2eaa1655148 master_replid2:0000000000000000000000000000000000000000 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0

以下のようなスクリプトを書きましたがうまくいきません。

ROLE=$(redis-cli info replication | grep "role:" | cut -d ":" -f2) echo "$ROLE" echo "role = '$ROLE'"

実行結果

master 'ole = 'master

1個目のechoだけ見るとうまくいってそうですが、2個めのechoは表示がバグってしまっています。この後ROLEの中身をifで判断したいのですが軒並みうまくいきません。
変数ROLEに何か変な文字コードが入ってしまってるのでしょうか?

Redisの出力をoutput.txtに書き写して、redis-cli info replicationcat output.txtにするとうまく動きました。

環境

  • GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)
  • コンテナイメージ redis:7.0.0-bullseye

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

はい。
元の行のrole:masterの後にCR(\r)が入っているので、role = 'masterを表示した後、行頭に戻って'を出力しています。

Bash

1ROLE=$(redis-cli info replication | grep "role:" | cut -d ":" -f2 | tr -d '\r') 2とか、 3ROLE=$(redis-cli info replication | sed -n 's/\r//;s/^role://p')

投稿2022/12/18 02:30

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

なるほどーありがとうございます

投稿2022/12/18 02:38

SatoKenta

総合スコア38

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2022/12/18 03:22

表示がなんか変な時は、 ./スクリプト | cat -v とすると、見えない文字が見えます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問