grepコマンドの検索文字列に一致する行の有無によって処理を分岐するシェルスクリプト
目次
スポンサードリンク
シェルスクリプトでは、コマンドの実行結果によって処理を分岐させることができます。grepコマンドも例外ではなく、その戻り値を利用して、検索結果があったかどうかを判断します。ファイルの有無を確認したり、特定の文字列が含まれているかどうかを判断する際に非常に便利なテクニックです。
grepコマンドの場合、以下の戻り値になります。
- 戻り値が0の場合: 検索文字列が一致する行が見つかった
- 戻り値が1の場合: 検索文字列が一致する行が見つからなかった
この戻り値をif文の条件として利用することで、処理を分岐させることができます。
ファイルから検索する場合のサンプルコード
ファイル内に特定の文字列が含まれているかどうかで処理を分岐するサンプルコードです。検索対象のファイルパスと検索する文字列を指定して、grepを実行します。-q オプションを指定することで標準出力にgrepでヒットした行が出力されるのを防いでいます。
#!/bin/bash
# 検索するファイル
file="your_file.txt"
# 検索する文字列
search_word="your_word"
# grepコマンドを実行し戻り値を判定
if grep -q "$search_word" "$file"; then
# 検索文字列が見つかった場合の処理
echo "検索文字列 '$search_word' がファイル '$file' に見つかりました。"
else
# 検索文字列が見つからなかった場合の処理
echo "検索文字列 '$search_word' はファイル '$file' に見つかりませんでした。"
fi
変数の値から検索する場合のサンプルコード
シェルスクリプト上の変数の値に特定の文字列が含まれるかどうかで処理を分岐するサンプルコードです。
#!/bin/bash
# 検索するファイル
text="sample text"
# 検索する文字列
search_word="text"
# grepコマンドを実行し戻り値を判定
if echo "$text" | grep -q "$search_word" ; then
# 検索文字列が見つかった場合の処理
echo "検索文字列 '$search_word' がファイル '$file' に見つかりました。"
else
# 検索文字列が見つからなかった場合の処理
echo "検索文字列 '$search_word' はファイル '$file' に見つかりませんでした。"
fi
シェルスクリプトの知識は、プログラマにとって長く役立つ知識です。 私はこちらの書籍で一通り知識を抑えました。基本から丁寧に解説されています。
リンク
最短3時間で覚えるLinuxシェルスクリプト
こちらは、シェルスクリプトの基本的な書き方、デバッグ方法、if, case, while, forなど基本的な制御構文について書かれています。30日間の無料体験もできる『Kindle Unlimited』でも読むことができます。
リンク
Linuxコマンドについて徹底的に学べるUdemy講座
もう絶対に忘れない Linux コマンド【Linux 100本ノック+名前の由来+丁寧な解説で、長期記憶に焼き付けろ!】
Search
Recent Posts
- Apacheの起動状態をチェックして停止してる場合にApacheを起動するシェルスクリプト
- Amazon LinuxのOSバージョンを調べる方法|/etc/redhat-release の代替ファイル
- MYSQLでダンプファイルを取得する際に発生したエラー「Couldn't execute 'SELECT BINLOG_GTID_POS('', '0')': You are not using binary logging (1381)」の原因と対処方法
- RHEL系Linuxでリポジトリを一覧表示するコマンド(dnf repolist)
- .php以外の拡張子でPHPを動作させようとして発生したエラー「Got error 'Access to the script '/var/www/html/php.html' has been denied (see security.limit_extensions)'」の原因と対処方法