Bashで大文字←→小文字を変換する方法まとめ【シェル】

シェル環境(Bash環境)やシェルスクリプト(Bashスクリプト)で「大文字と小文字を変換する方法」をまとめます

コマンドラインシェルとして最も広く使われている「Bash」には、変数に設定された文字列の小文字と大文字を変換する機能があります。パターン別にまとめると、以下のようになります。

小文字にする

1文字目のみ小文字に変換するには、以下の例のように「${変数名,}」を用います。

$ s="HELLO WORLD"
$ echo ${s,}
hELLO WORLD

すべて小文字に変換するには、以下の例のように「${変数名,,}」を用います。

$ s="HELLO WORLD"
$ echo ${s,,}
hello world

指定した文字のみ小文字に変換するには、以下の例のように「${変数名,,[対象文字]}」を用います。

$ s="HELLO WORLD"
$ echo ${s,,[AIUEO]}
HeLLo WoRLD

大文字にする

1文字目のみ大文字に変換するには、以下の例のように「${変数名^}」を用います。

$ s="hello world"
$ echo ${s^}
Hello world

すべて大文字に変換するには、以下の例のように「${変数名^^}」を用います。

$ s="hello world"
$ echo ${s^^}
HELLO WORLD

指定した文字のみ大文字に変換するには、以下の例のように「${変数名^^[対象文字]}」を用います。

$ s="hello world"
$ echo ${s^^[aiueo]}
hEllO wOrld

大文字と小文字をトグルする(逆にする)

1文字目のみトグルするには、以下の例のように「${変数名~}」を用います。

$ s="Hello World"
$ echo ${s~}
hello World

すべてトグルするには、以下の例のように「${変数名~~}」を用います。

$ s="Hello World"
$ echo ${s~~}
hELLO wORLD

指定した文字のみトグルするには、以下の例のように「${変数名^^[対象文字]}」を用います。

$ s="Hello World"
$ echo ${s~~[lodW]}
HeLLO wOrLD

各単語の頭文字だけ大文字にする

各単語の頭文字を大文字にするには、以下の例のように文字列を配列にしてから「${配列名[@]^}」を用います。

$ s="hello world"
$ s=($s)
$ echo ${s[@]^}
Hello World

大文字小文字が混在した文字列から変換するなら、以下の例のように、すべて小文字にしてから変換すると良いでしょう。

$ s="hEllO wOrld"
$ s=(${s,,})
$ echo ${s[@]^}
Hello World

関連記事

更新履歴

2018-09-02 Ubuntu 18.04 LTSで動作を確認