シェルスクリプト if文のzオプション(-z)とnオプション(-n)は何か?

Bash-prograshi(プロぐらし)-kv General
記事内に広告が含まれていることがあります。

if文の条件式の中で使われる 「-z」や「-n」は変数が文字列の時に中身が空かそうでないかを判別する便利なオプションです。

zオプション

zオプションは文字列の長さが0の時にtrueになります。

if [ -z ${hoge}]; then
   処理
fi

実例

#!/bin/bash

function stringCheck {
    if [ -z ${1} ]; then
        echo "true"
    else
        echo "false"
    fi
}

x="123"
stringCheck $x

実行結果

$ ./test.sh
false


[ ]とは?

ifの条件式の[ -z ${1} ];[ ]は中の式を評価して、trueかfalseを返します
[ ]と式の間には半角スペースが必須

厳密にはtestコマンドの代替です。if test -z ${1}; と書くのと同じです。

${1}とは?

$1や$2は関数に渡された引数を呼び出す変数です。

${1}の{ } は変数を明示するために使います。ここでは $1 = ${1} です。

$1234だと1234番目の変数ですが、${1}234だと1番目の変数と数値234になります。

変数の定義方法

シェルスクリプトて変数を定義する時は $は不要です。「変数=値」とします。
※イコールの前後に空白を入れるとエラーになります。


nオプション

nオプションは文字列の長さが1以上の時にtrueになります。

if [ -n ${hoge}]; then
   処理
fi

実例

#!/bin/bash

function stringCheck {
    if [ -n ${1} ]; then
        echo "true"
    else
        echo "false"
    fi
}

x="123"
stringCheck $x

実行結果

$ ./test.sh
true


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