#author("2024-10-01T10:57:39+09:00","default:yakumo_murakami","yakumo_murakami") #author("2024-10-01T11:13:51+09:00","default:yakumo_murakami","yakumo_murakami") [[Shell]] * if文の比較要素 [#f72b4fbd] #contents ** 数値 [#y028bdc4] ,A -eq B,とBが等しければ true,equal,= ,A -ne B,とBが等しくなければ true,not equal,!= ,A -gt B,がBより大なら true,greater than,> ,A -ge B,がB以上なら true,greater than or equal,>= ,A -lt B,がBより小なら true,less than,< ,A -le B,がB以下なら true,less than or equal,<= ** 文字列 [#x04530ef] *** 一致 [#xa66f1af] if [ ${A} == "ABC" ];then... *** 不一致 [#d73adf5b] if [ ${A} != "ABC" ];then... ** 正規表現 [#k6fd008e] if [[ ${A} =~ ^[ABC]+$ ]];then... 否定はちょっとわからなかった。 ** and or [#ff7b6d66] *** AND [#l3a6d406] $ [ ${A} == "ABC" -a 1 -eq 1 ];echo $? 1 $ *** OR [#z0e7f6ec] $ [ ${A} == "ABC" -o 1 -eq 1 ];echo $? 0 $ ** 別の書き方 [#w9e6560a] A="ABCDEFG H" if [[ "${A}" =~ ^[A-Z]+$ ]] || [[ "${A}" =~ ABC ]];then echo "OK" fi if [[ "${A}" =~ ^[A-Z]+$ ]] && [[ "${A}" =~ ABC ]];then echo "OK" else echo "NG" fi if [[ "${A}" =~ ABC ]];then echo "OK" else echo "NG" fi *** 実行結果 [#see8bb65] $ sh ~/bin/test99.sh OK NG OK * 注意 [#u19d0693] ただし、and or で -a や -o を使う場合は以下に注意。 ** 引用元 [#zccae8ee] - https://pubs.opengroup.org/onlinepubs/9699919799/help/codes.html#OB > Obsolescent [Option End] The functionality described may be removed in a future version of this volume of POSIX.1-2017. Strictly Conforming POSIX Applications and Strictly Conforming XSI Applications shall not use obsolescent features. > (和訳)廃止予定[オプション終了] 記載されている機能は、POSIX.1-2017 のこの巻の将来のバージョンで削除される可能性があります。厳密に準拠する POSIX アプリケーションおよび厳密に準拠する XSI アプリケーションでは、廃止予定の機能を使用しないでください。 ふむ。