はじめに
sed コマンドで s 内部コマンドを使って置換処理を行った場合、
条件に該当する文字列が見つからず置換が行われなかったとしても、終了ステータス $? は 0 になります。
実際に置換されたのか?置換されなかったのか?を終了ステータス $? で判定する方法について紹介します。
検証環境
| |
準備
サンプルテキストデータ
動作確認のために置換処理に利用するテキストファイル ( test.txt ) を作成します。
| |
sedで置換が行われた場合、行われなかった場合の終了コードを確認
sedで 置換が行われた場合 の終了ステータスを確認してみます。
| |
sedで 置換が行われなかった場合 の終了ステータスを確認してみます。
| |
いずれの場合も、終了コード $? は 0 となっています。
sedで置換が行われたなかった場合の終了コードを 0 以外にする
先程の sed コマンドを多少変更することで、終了コードを 0 以外に変更できます。
ポイントは先程の sed コマンドの後方に t; q100; というコマンドが追加されている点です。
これにより、置換処理が行われなかった場合は終了ステータス $? が 100 となります。
sedで 置換が行われた場合 の終了ステータスを確認してみます。
| |
sedで 置換が行われなかった場合 の終了ステータスを確認してみます。
| |
ひとこと
sed で置換が行われたのか?あるいは空振りしたのかの判断を行いたい場合にご利用ください。