1. ホーム
  2. bash

[解決済み] bashのif/else文の中でファイルgrep比較を使用するにはどうすればよいですか?

2022-05-17 03:54:57

質問

サーバが起動したとき、サーバがどのように構成されているかを確認するために、あるファイルをチェックする必要があります。

私たちは、/etc/aws/hosts.conf ファイル内の次の文字列を検索したいと思います。

MYSQL_ROLE=master

次に、その文字列が存在するかどうかをテストし、文字列が存在するかどうかによって2つのオプションのいずれかを実行するために、if/else文を使用したいと思います。

if文のBASH構文はどのようなものですか?

if [ ????? ]; then
  #do one thing
else
  #do another thing
fi

どのように解決するのですか?

から grep --help を参照してください。 man grep :

<ブロッククオート

終了ステータスは、何らかの行が選択された場合は0、それ以外は1です。 何らかのエラーが発生し、-q が与えられなかった場合、終了ステータスは 2 となります。

if grep --quiet MYSQL_ROLE=master /etc/aws/hosts.conf; then
  echo exists
else
  echo not found
fi

もっと具体的な正規表現を使いたい場合もあるでしょう。 ^MYSQL_ROLE=master$ のような、より具体的な正規表現を使用して、コメントや単に "master" で始まる名前などにこの文字列が含まれないようにすることもできます。

これは もし はコマンドを受け取って実行し、そのコマンドの戻り値を使用して、ゼロは真、ゼロ以外は偽を意味し、どのように処理を進めるかを決定するからです。