単行本シェルプログラミングは得意ですか?シェルプログラミングって苦手だったんですよね。いうと、何となくなんですが、、、イケてないダサい変数大文字?変数入力するときイコールにスペース入れちゃダメ、は?何それ?.....などなどほんとそんな独断と偏見で嫌ってました。インフラの仕事をしているとシェルスクリプトから逃れることはできません。様々なツールはシェルプログラミングでできてることが多いので読まずに仕事はできないんです。そもそもシェルプログラミングってかなりお手軽なんですよね。Linuxのディストリビューションには必ず入ってるので、インストールが不要というのはとてもありがたいのです。RubyやGoなど後からインストールしなきゃならないので、じゃそのバージョンどうするか?とかデプロイ方法書き直す必要あるとか、後からインストールするのはなかなか注意が必要なのです。シェルはもともと入ってるのですぐ使えます。便利ですよー!!そんなお手軽さがあるのにただ何となく嫌ってたシェルプログラミング。てきとーにスクリプト書いてましたが、だんだんとなんだこれ?と思うところが増えて来て、ツケが回ってくることが多くなりいっちょ本でも読むかと思いました。そんな時にたまたま「新しいシェルプログラミングの教科書」を読んだんですが、めっちゃいい本!!!あーこれ気になってたところだ!っというのがいくつも出てきました。意味わかります?などなどあーそうそうこれわからなかったけど飛ばしてたーーー!!!というところがたくさん出てきました。何枚も目からうろこが落ちます。※↑の答えは最後に記載してます。までも、いきなりプログラミングやったこと無い人がシェルプログラミングのコードを読んでも退屈すると思うんで、ある程度シェルプログラミング書いたことある人の方がオススメです。エンジニアとして仕事をしているのであればなおさらオススメですよ。(答え){}はグループコマンドで{}でかこったコマンドをまとめて1つのコマンドとして実行します、また()はサブシェルといって子プロセスとして()でかこったコマンドを実行します。grepの結果を出力しないようにします。判定のところにある文字があればtrueにする場合など出力結果が要らないので-qをつけることができます。現在の実行プロセスのなかで変数を定義したりします。通常シェルプログラミングの中の定義した変数は子プロセスを立ち上げて変数が定義されるので、実行が終了すれば変数は無くなりますがsourceは定義されたままになります。--のあとの引数はコマンドに対する引数であることを表します。-xxxなどパラメータと分けて読み込ませるためです。noexecを実行すると、中身を実行せず構文解析のみをしてくれます。パス形式でシェルスクリプトを実行した場合でもファイル名のみが取得されます。説明は複雑になるのでP215読んでみてください。