25
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

シェル変数の定義状況に応じて任意の値を返す方法

Last updated at Posted at 2012-09-19

わりとif文でシコシコ変数定義したりするスクリプトを見るので。
変数が未定義だったり空の場合に初期値として返す値を指定出来たりします。

バージョンまでは調べてないけど、BashとZshでも出来ました。

書式

とりあえずよく使いそうな3パターン。他にもあるのかな??

  1. 参照時に変数に未定義か空文字の場合に初期値を返す(変数に代入はしない)
  2. 参照時に変数に未定義か空文字の場合に初期値を代入する(以降の参照で有効)
  3. 参照時に変数に定義済みの場合に初期値を返す

1. 参照時に変数に未定義か空文字の場合に初期値を返す

${変数名:-初期値}

$ echo ${HOGE}
zsh: HOGE: parameter not set
$ echo ${HOGE:-hoge}
hoge
$ echo ${HOGE}
zsh: HOGE: parameter not set
$ export HOGE=hoge
$ echo ${HOGE:-hage}
hoge

気をつけるべき点は初期値が代入されるわけではなく返却されるだけということ。

2. 参照時に変数に未定義か空文字の場合に初期値を代入する

${変数名:=初期値}

$ echo ${HOGE}
zsh: HOGE: parameter not set
$ echo ${HOGE:=hoge}
hoge
$ echo ${HOGE}
hoge
$ echo ${HOGE:=hage}
hoge

こちらは 1. と違って初期値として代入される。

3. 参照時に変数に定義済みの場合に初期値を返す

${変数名:+初期値}

$ export HOGE=hoge
$ echo ${HOGE}
hoge
$ echo ${HOGE:+hage}
hage
$ unset HOGE
$ echo ${HOGE:+hage}

$

個人的にはあまり使わない...(;´∀`)

1.は一時的に必要な変数で、2.は設定値をもたせたりする場合に使うかな。

ざっくりですが、超プチTipsでした。

25
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?