- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2017-09-20T23:05:05+09:00","","")
#navi(../)
* 変数に値が設定されていたら変更せず、設定されていなければ初期値を設定する方法 [#l5acd783]
bashシェルでは、以下に記述する方法で、変数を初期化することができます。~
ifを使う必要がなくスマートにシェルスクリプトを記述できると思います。
#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
* 変数の初期化・値がある場合は変更なし・値がない場合は初期値を設定する実行例 [#g611df0f]
if then else による変数初期化を簡単に書くことができます。
**例:変数vに値がある場合は変化なし、変数vが空の場合は初期値(左辺値)を設定 [#zb990f80]
-変数vが空の場合、vにsakuraが代入される例
$ unset -v v
$ if [ -z "$v" ]; then
> v=sakura
> fi
$ echo $v
sakura
#br
-変数vに値がある場合は、変化なし
$ v=tsubaki
$ if [ -z "$v" ]; then
> v=sakura
> fi
$ echo $v
tsubaki
これを以下のように記述することができます。
v=${v:-tsubaki}
実際に実行してみます。
$ unset -v v
$ v=${v:-tsubaki}
$ echo $v
tsubaki
$ v=sakura
$ v=${v:-tsubaki}
$ echo $v
sakura
したがって、以下のような構文になります。
初期化確認変数=${初期化確認変数:-左辺の変数が空の場合に設定する値}
**例:変数sに値がある場合は、変数sの値を変数vに代入する実行例になります。 [#mc3af716]
- 変数sが値なしのため、v=tsubakiが実行される
$ unset -v s ; unset -v v
$ if [ -z $s ]; then
> v=tsuaki
> else
> v=$s
> fi
$ echo $v
tsuaki
#br
- 変数sにsakuraが設定されているため、v=$sが実行される
$ unset -v v ; s=sakura
$ if [ -z $s ]; then
> v=tsuaki
> else
> v=$s
> fi
$ echo $v
sakura
これを以下のように記述することができます。
v=${s:-tsubaki}
実際に実行してみます。
-変数sが設定されていない場合
$ unset -v s; unset -v v
$ v=${s:-tsubaki}
$ echo $v
tsubaki
#br
-変数sにsakuraが設定されている場合
$ unset -v s; unset -v v
$ s=sakura
$ v=${s:-tsubaki}
$ echo $v
sakura
したがって、以下のような構文になります。
変数=${値があった場合代入する変数:-左辺の変数が空の場合に設定する値}
以上、bashの便利な機能を使用して変数の初期化をする方法の紹介でした。
#htmlinsertpcsp(linux_btm_top.html,linux-sp.html)