bash変数展開一覧表 (2018/08/12)
bashスクリプトのコード見てみたら${変数名:-値}みたいなのが出てきた、なんだこれはと思い調べてみた。
ここにすごくよく分かり易いまとめが書かれてた。
以上、レポっした、、、、ってオイ!Σ\( ̄ー ̄;)
それじゃああまりにも意味がなさすぎるので、それぞれの変数展開を実行したときの返り値と実行後の変数値の状態をまとめてみた。
初期状態の違う3つの変数を用意し、それに対する変数展開の結果である。
変数の初期状態
- hoge=old
- foo=""
- bar →未定義
ようは値ありと空文字と未定義の3種だ。
実行内容
hoge,foo,barのそれぞれの変数にそれぞれのコマンドで変数展開を行う。
例)echo ${hoge:+"new"}
返り値はその場で帰ってくる値で。実行後の変数値は変数展開実行後にhoge,foo,barそれぞれに入っている値
そして結果は次の通り
実行結果
コマンド→ | = | := | + | :+ | - | :- | ? | :? | |
返 り 値 |
hoge | old | old | new | new | old | old | old | old |
foo | "" | new | new | "" | "" | new | "" | error | |
bar | new | new | new | new | error | error | |||
変 数 値 |
hoge | old | old | old | old | old | old | old | |
foo | "" | new | "" | "" | "" | "" | "" | "" | |
bar | new | new |
こうみると”=”や":="は値無しや未定義に対して値を設定し、設定した時にその値を返してくれて、"-"と":-"は値を設定しない。"+"と":+"は"-"達の反対。
ほんで、"?"と":?"は未定義の時とかにスクリプトを強制停止させるために使えそう。
今日はここまでにしときます(神の慈悲)。それぞれの変数展開を今後自分が使っていったら、ここにどんな使い方したのか追記していこうと思います。
編集後記
正直引用した記事で事足りる気がする。自分用だしま、多少はね?(歪んだ完璧主義を何度も正してくれた金言)
このテーブル表作る時にvimの使い方とかググりまくったのでそっちをまとめた方がよかった希ガス。あとハテナブログの編集楽で助かる、最近すごいものが有るんやね~。
次回:さっき言ってたvimの使い方