#author("2017-09-20T23:05:05+09:00","","")
#author("2017-09-20T23:06:02+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)
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS