プログラミングをすると頻繁に条件式を使いますよね.
様々な評価式がありますが,文字列同士を比較する機会は多いはずです.
シェルスクリプトでも文字列の比較ができます.
今回はBashを使って文字列を比較する演算子を紹介します.
= 比較する文字列が等しい
文字列が等しいことを確かめるときは = を使います.
str1 = str2
文字列と = の間はそれぞれスペースを空けましょう.
サンプルコード
引数が月曜日であればベンチプレスと表示するコードを作成しました.
day=$1
if [ $day = '月曜日' ];then
echo 'ベンチプレス'
fi
条件式が一致しているのでベンチプレスと表示されました.
月曜日以外を入れると表示されないことも確かめておきましょう.
日曜日では表示されません.
評価演算子が正しく処理されていることが分かりました.
!= 比較する文字列が等しくない
文字列が等しくないことを判定したいときは != を使います.
! は反対という意味があります.
str1 != str2
さきほどと同じように文字列と = の間は1つスペースを空けましょう.
サンプルコード
引数が月曜日でなければベンチプレスと表示します.
day=$1
if [ $day != '月曜日' ];then
echo 'ベンチプレス'
fi
月曜日以外であればベンチプレスと表示したいので正しく処理されていそうです.
-z 文字列が空文字どうか確かめる
文字列が空文字かどうか確かめる場合は -z を使います.
-z str1
空文字を判定するときプログラミングでは -z を使わないので少し戸惑うかもしれません.
サンプルコード
引数がないときにベンチプレスと表示します.
day=$1
if [ -z $day ];then
echo 'ベンチプレス'
fi
なにか引数を渡すと空文字でなくなるため表示されません.
-n 文字列が空文字でないと確かめる
文字列が空文字でないことを確かめるときは -n を使います.
-n str1
文字列になにか値が入っていれば条件式は真となります.
サンプルコード
引数を渡すと空文字でなくなるため,ベンチプレスと表示されます.
day=$1
if [ -n $day ];then
echo 'ベンチプレス'
fi
まとめ
今回はシェルスクリプトの文字列に関する評価演算子を紹介しました.
文字列を比較する演算子はプログラミング言語と変わらないので覚えやすかったですね.
空文字を判定する演算子は初めて見ると戸惑うかもしれません.
私も初めて見たときはただのオプションとしか認知せず処理の意味をスルーしていました.
- -z:空文字かどうかを判定する(空文字であれば真)
- -n:空文字でないか判定する(空文字でなければ真)
特徴的な演算子だからこそ1度覚えると忘れないことでしょう!