表現 | 変数があれば | 変数が空なら (:なしは定義済みかどうか) | 三項演算子風表現 |
---|---|---|---|
${変数名:-文字列} | 変数の中身を返す | 文字列を返す | 変数 ? 変数 : 文字列 |
${変数名:=文字列} | 変数の中身を返す | 変数に文字列を代入し、変数の中身を返す | 変数 ? 変数 : (変数 = 文字列) |
${変数名:?文字列} | 変数の中身を返す | 文字列を出力し終了する | 変数 ? 変数 : abort(文字列) |
${変数名:+文字列} | 文字列を返す | 空を返す | 変数 ? 文字列 : '' |
表現 | 説明 |
---|---|
${変数名:位置} | n文字目から末尾まで表示。1文字目は0 |
${変数名:位置:長さ} | n文字目から長さ分表示 |
${変数名^} | 1文字目を大文字にする |
${変数名^^} | 全部を大文字にする |
${変数名,} | 1文字目を小文字にする |
${変数名,,} | 全部を小文字にする |
${変数名~} | 1文字目を大文字小文字反転する |
${変数名~~} | 全部を大文字小文字反転する |
表現 | 説明 | 例1 (/foo/bar/baz) | 例2 (foo/bar/baz) |
---|---|---|---|
${変数名#パターン} | 先頭パターンマッチ部分(最短)を削除 | ${var#*/} => foo/bar/baz |
${var#*/} => bar/baz |
${変数名##パターン} | 先頭パターンマッチ部分(最長)を削除 | ${var##*/} => baz (basename) |
${var##*/} => baz |
${変数名%パターン} | 末尾パターンマッチ部分(最短)を削除 | ${var%/*} => /foo/bar (dirname) |
${var%/*} => foo/bar |
${変数名%%パターン} | 末尾パターンマッチ部分(最長)を削除 | ${var%%/*} => |
${var%%/*} => foo |
表現 | 説明 | 例 (a,b,c) |
---|---|---|
${変数名/パターン/文字列} | 最初のパターンマッチ部分を文字列に置換 | ${var/,/;} => a;b,c |
${変数名//パターン/文字列} | 全部のパターンマッチ部分を文字列に置換 | ${var//,/;} => a;b;c |
- shopt -s extglob でもっと複雑なパターンが使用可能