こんにちは、さるまりんです。
今回はシェルです。シェルスクリプトです。
文字列が空かどうかで処理を切り替えるスクリプトを書く必要があったのでメモです。
空文字列かどうかをテストするには-z
を使います。
反対に空文字列ではないテストをするには-n
を使います。
簡単にプログラムにしてみました。
checkifempty.sh
#!/bin/sh
PARAM=$1
echo "[$PARAM]"
if [ -z "$PARAM" ]; then
# 変数PARAMが空文字列の時
echo nothing given
fi
if [ -n "$PARAM" ]; then
# 変数PARAMが空文字列じゃない時
echo some string given
fi
まずはPARAM=$1
でコマンドライン引数の1つ目を変数PARAM
に代入します。
そして空文字列かのテストです。
if [ -z $PARAM ]; then
上の条件はPARAM
の持つ文字列が空文字列(長さが0)のときに真と評価され、if
文内が実行されます。
if [ -n $PARAM ]; then
反対にこちらの条件ではPARAM
の文字列の長さが1以上の時に真と評価され、if
文内が実行されます。
実行例です。
$ ./checkifempty.sh abc
[abc]
some string given
$ ./checkifempty.sh
[]
nothing given
スクリプトにabcの文字列を与えて実行したときはsome string givenが表示されて、何も与えず実行したときはnothing givenが表示されています。
if
だけでなくelse
にも対応することで、テストはひとつにすることもできます
if [ -z "$PARAM" ]; then
echo nothing given
else
echo some string given
fi
!
を使って結果を否定することもできます。
if [ ! -z "$PARAM" ]; then
echo some string given
fi
同じことをするのでもいろんな方法がありますね。
読んでくださってありがとうございます。
それではまた!