| 書式 | 説明 |
|---|---|
| ${value} | 変数valueの値を展開 |
| ${value:-hoge} | 変数valueの値を展開するが、valueが未設定か空文字の場合はhogeの値を展開 |
| ${value:=hoge} | 変数valueの値を展開するが、valueが未設定か空文字の場合はhogeの値を展開し更にvalueに代入 |
| ${value:?hoge} | 変数valueの値を展開するが、valueが未設定か空文字の場合はhogeの値を展開し更に標準エラー出力 |
| ${value:+hoge} | 変数valueの値を展開するが、valueが未設定か空文字の場合は空文字として処理 |
| ${value:offset} | 変数valueの値を展開する際、offsetの位置から展開 |
| ${value:offset:length} | 変数valueの値を展開する際、offsetの位置から最大length文字分を展開 |
| ${!hoge*} ${!hoge@} | hogeで始まる全ての変数を、特殊変数IFSの最初の文字(デフォルト空白)で区切って展開 |
| ${hoge[*]} ${!hoge[@]} | hogeが配列変数であれば、配列hogeの値のリストを展開。hogeが配列でない場合、hogeの値に展開 |
| ${!hoge[*]} ${!hoge[@]} | hogeが配列変数であれば、配列hogeのキーリストを展開。hogeが配列でない場合、空文字として展開 |
| ${#hoge} ${#hoge[*]} ${#hoge[@]} | 文字列数、要素数を出力 |
| ${hoge#word} ${hoge##word} | hogeを展開し、前方からwordに一致した分まで削除して出力、#は最初にマッチした部分までで、##は最後にマッチした部分まで削除 |
| ${hoge%word} ${hoge%%word} | hogeを展開し、後方からwordに一致した分まで削除して出力、%は最初にマッチした部分までで、%%は最後にマッチした部分まで削除 |
| ${hoge/pattern/word} | hogeを展開し、patternに一致した最後の部分までをwordに置換してから出力 |
補記事項
配列の代入と展開結果例
$ value=([0]="zero" [1]="one" [2]="two" [3]="three") $ echo $value zero $ echo ${value[1]} one $ echo ${value[*]} zero one two three $ echo ${!value[*]} 0 1 2 3 $ value=(["z"]="zero" ["o"]="one" ["tw"]="two" ["th"]="three") $ echo ${!value[*]} z o tw th
![Software Design (ソフトウェアデザイン) 2022年06月号 [雑誌] Software Design (ソフトウェアデザイン) 2022年06月号 [雑誌]](https://m.media-amazon.com/images/I/51VxNEVVsnL._SL500_.jpg)


