シェル芸

朝早起きしたので、フルスクラッチから1日でCMSを作る シェルスクリプト高速開発手法入門 という本を買ってちょっと読んだ。 シェル芸人が考えていることをテキストに起こしながらシェルでいろいろ作る様子が描かれてる。

シェルスクリプトと言えば、今日たまたまこういうシェルスクリプトを見かけた。
https://github.com/flynn/slugbuilder/blob/master/builder/install-buildpack#L16

IFS='#' read x y \<\<\< "$url"

環境変数IFSで組込みコマンド readの区切り文字を空白文字から "#" に変更しつつ (URLの中の"#"より前をx、後をyに入れたい)、変数urlを展開しながらヒアストリングで標準入力として与えている。 echo "$url" | read ... というふうにしなかったのは、 パイプに変数の情報を渡すよりもシェル自身に展開させた方が安全だからという考えがあったりなかったりするのだろう。 Docker関係のコードを読んでるとこういう細かすぎて伝わらないシェル芸がいっぱい出てきて面白い。