今号では、bash スクリプトで使用する括弧 () [] {} についてご紹介します!
bash における () [] {} とは
Linux で bash を使用している環境で、スクリプト内などに括弧 () [] {} が使用されることがあります。
これらの括弧を使用することで、より複雑なスクリプトが作成できたり、スクリプトの記述を簡略化する事が出来ます。
なお、bash とはシェルの名称です。シェルには他にもたくさんの種類がありますが、bash が Linux 標準のシェルとして採用されています。
() [] {} の使い方
- 丸括弧 ()
丸括弧 () は、括弧内に記載された命令をサブシェルとして実行します。
サブシェルというのは、シェルから起動された別の (子プロセスの) シェルのことを言います。
サブシェルで操作した内容は、元のシェルに影響を与えません。$ pwd /opt/dir1 $ (cd /opt/dir2) $ pwd /opt/dir1
ただし、ファイルの内容が変更されるような操作 はサブシェルとして実行しても
元のシェル (に配置されているファイル) に影響がありますので、注意してくださいね。$ cat test.txt 123 $ (echo "456" > test.txt) $ cat test.txt 456
- 角括弧 []
角括弧 [] は test コマンドと同じ動作を実行します。
if 文で条件式を書く際に使用される事がほとんどです。例えば、下記の 2つのコマンドはどちらも同じ処理を実行します。
$ ls test.txt $ if test -e test.txt; then echo "true"; fi true
$ ls test.txt $ if [ -e test.txt ]; then echo "true"; fi true
また、類似の機能で二重角括弧 [[]] を使用することも出来ます。
使用方法は角括弧 [] と同じですが、二重角括弧 [[]] の方は && や || などの演算子や
正規表現に対応しているため、機能が充実していると言えます。例えば、&& 演算子を使用した式を角括弧 [] で使用するとエラーとなりますが、
二重角括弧 [[]] では正常に処理されます。$ if [ -e test.txt && ! -e test2.txt ]; then echo "true"; fi -bash: [: `]'がありません
$ if [[ -e test.txt && ! -e test2.txt ]]; then echo "true"; fi true
- 波括弧 {}
波括弧 {} には様々な使用方法があります。まずひとつめは、下記のように括弧内に指定した変数の展開を実行します。
$ echo ${HOME} /home/user1
ふたつめは、複数のコマンドをまとめて実行します。
1行にまとめることができるので、見やすくて便利ですね。$ { echo "a"; echo "b"; echo "c"; } a b c
その他には、ブレース展開という波括弧 {} 内に様々なパターンを記述し、様々な文字列を出力する
機能がありますが、この機能については説明が長くなるため、次号でご紹介したいと思います!