シェルスクリプトでの「空の文字」の判定

みなさん、こんにちは。プログラム書くのが苦手で、実用できる言語はbashとhtmlだけ。山田ハヤオです。

身体がかなり調子悪いので手抜きの記事になりますがご了承ください。

今回の内容は「シェルでの変数の存在や空の判定」です。

少し前にnullがトレンド入りし、0とnullの違いが話題になりました。更に未定義なんてものもあるようですが、シェルではnullというのがよくわかりませんでした。(あれ?間違ってたら教えてください。)

スポンサーリンク

「変数(文字)が空のときにtrue」

さっさと本題に移りましょう。身体中が痛いので。

変数(文字)が空のときにtrueを返すのは、シェルでは以下のように書くそうです。

#! /usr/bin/env bash

var=
if [[ -z $var ]]; then
    echo '変数varは空です。'
fi

このスクリプトを実行すると「変数varは空です。」と表示されます。
簡単に言うと”-z”を使用しています。

「変数(文字)が空ではないときにtrue」

今度はその逆になります。

#! /usr/bin/env bash

var="serene"
if [[ ! -z $var ]]; then
    echo '変数varは空ではありません。'
fi

このように書いてもいいのですが、もっとシンプルに書くことはできます。

#! /usr/bin/env bash

var=serene
if [[ -n $var ]]; then
    echo '変数varは空ではありません。'
fi

おまけ

全く違う話になるのですが、上記のようなifの場合は、こういうふうにもかけるようです。

#! /usr/bin/env bash

var=
[[ -z $var ]] && echo '変数varは空です。'

これはどうやら”[[ ]]”が比較するコマンドだからできるそうです。&&はコマンドをつなげる役割を果たし、前のコマンドが正常に終了したら次を実行するという意味です。

それでは、今回はこのへんで失礼します。

コメント

タイトルとURLをコピーしました