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

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【6/19開催】Kong Community Japan Meetup #4
本イベントでは、Kong Inc. のVP of ProductであるReza Shafii氏もプレゼンターとして参加。当社からはアーキテクト マネージャーの槌野の登壇が決定!参加無料です!!
https://column.api-ecosystem.sios.jp/connect/kong/1081/

【6/21開催】開発者目線でのSBOMとの向き合い方
SBOMの導入から開発者がSBOMの作成・管理を自動で行っていくための方法(デモ)を紹介します。SBOMを全く知らない人から、開発との統合までを紹介するので様々なレベルの方に学びがあるライブとなる予定です!
https://tech-lab.connpass.com/event/321422/

【7/19開催】現場で役立つAzure神小技10+α 〜生成AI,RAG,コスト削減など旬な技術満載のLT大会〜
Azureの最新技術や実用的な小技を紹介する特別なライトニングトーク大会を開催します!
https://tech-lab.connpass.com/event/319077/

【7/26開催】最適なIaCツールを選ぼう
プロジェクトでのツール選びに困らないための重要な観点をご説明します!
https://tech-lab.connpass.com/event/319532/

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

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

アバター画像
About 貝野 友香 73 Articles
OSSよろず相談室でサポートをやっています。時々ライブ配信や勉強会に出ていることもあります。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる