インフラエンジニアbacchiのわかったことまとめ

bacchi.me

bash

シェルのグルーピングについて、( )と{ } の違いを調べた

更新日:

グルーピングで使う、{ }( )の違いがあやふやだったので調べてみました。

グルーピングを使うとコマンドを単独で実行するのではなく、
複数のコマンドを1つのコマンドとみなして実行することができます。

グルーピングには以下の利点があります。

  • グループ内でのみ環境の変更が有効になる
  • 複数のコマンドの実行結果をまとめる事ができる

大きな違いはコマンドをサブシェルで実行するか、カレントシェルで実行するかです。

{ }を使って実行した場合、{ }内で変更した環境変数などを以後もカレントシェルで実行できます。

( )を使って実行すると( )内で環境を変更してもカレントシェルに影響を与えません。

( )の場合は(の直後にスペースの有無は問いませんが、{ }の場合は{の直後にスペースが必要です。

また、{ }の場合は{ command_A ;}のように、;}としないと処理から抜けられません。

{ };はEnter(改行)を意味するので、{ }内で改行があればコマンドは通ります。

シェルスクリプトにおいて、コマンドをグルーピングするのはコマンドリストとして
複数のコマンドの実行結果をまとめてごにょごにょしたい、という場合がほとんどだと思います。

しかし、これらを使い分けることが必要となるシーンがあまりないと思います。

ですので、私は分かりやすさの点で( )を使うほうがベターかなと思いました。

Sponsor Link

スポンサーリンク

Sponsor Link

スポンサーリンク

-bash

Copyright© bacchi.me , 2018 AllRights Reserved.