知っておくとちょっと便利!bash スクリプトで使用する括弧 () [] {} について

今号では、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
    

    その他には、ブレース展開という波括弧 {} 内に様々なパターンを記述し、様々な文字列を出力する
    機能がありますが、この機能については説明が長くなるため、次号でご紹介したいと思います!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

3人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です