generated at
Shell Parameter Expansion

日本語では変数展開
ググラビリティ低いので困る





めっちゃ種類ある
aaa
$ man bash | grep "^\s*\${.*}$" | tr -d " " ${parameter} ${parameter:-word} ${parameter:=word} ${parameter:?word} ${parameter:+word} ${parameter:offset} ${parameter:offset:length} ${!prefix*} ${!prefix@} ${!name[@]} ${!name[*]} ${#parameter} ${parameter#word} ${parameter##word} ${parameter%word} ${parameter%%word} ${parameter/pattern/string}




${hoge:=word}
$hoge が未定義かnullの場合、wordを代入して、それを展開
jsでの $hoge || $hoge="word"


${hoge:-word}
$hoge が未定義かnullの場合、wordを展開
いずれにせよ $hoge になにか代入したわけではないので値は変わらない
jsでの $hoge || "word"
ex.shell
$ A=aaa $ echo ${B:-bbb} # $Bは未定義なので"bbb"が入る bbb $ echo ${A:-bbb} # $Aは定義済みなので$Aの値を返す aaa


${hoge:?word}
$hoge が未定義かnullの場合、word を標準エラー出力に出力して終了


${hoge:+word}
jsでの $hoge && "word"






: の有無
${hoge:=word}
$hoge が未定義かnullの場合、 word を代入する
${hoge=word}
$hoge が未定義の場合、 word を代入する
ex.shell
$ echo ${A1:=word} # A1は未定義なのでwordが入る word $ A2= # A2にnullを入れる $ echo ${A2:=word} # A2はnullなのでwordが入る word $ echo ${A3=word} # A3は未定義なのでwordが入る word $ A4= # A4にnullを入れる $ echo ${A4=word} # A4はnullなので、nullが返される # ←null













21種類あるらしい
それぞれの解説