自分で作成した関数を、こんな感じでパイプでつなげることが可能です。ouput.txt値を渡して、値を返すのではなく、標準入出力で処理できるのであれば、逐次処理の中で関数を読まなくてもすむ場合も非常に多いんじゃないでしょうか。第3の躓きポイント「繰り返し処理が面倒!」これも面倒なポイントですが、基本的にシェルスクリプトにおいて、繰り返し処理に配列と使う必要は無いとのことです。ここらへんは、xargsやwhileとreadを活用することで、シンプルに配列を使わずに、各処理を実行する例が記載されています。まとめ上記躓きポイントから、そもそもシェルスクリプトに向いている処理、向いていない処理を把握しておくことが大事とまとめられています。1シェルスクリプトは原則として、シェルの一般的なコマンド列を並べて書いただけのものである2シェルスクリプトの中のコマンドや関数は、原則として引数と戻り値ではなく標準入出力でデータをやりとりし、1行1レコードの形式のデータを連続して加工することに特化した作りになっている例えば、ステートフルな処理が必要だったり、対話コマンドが必要なものは、そもそもシェルスクリプトでやるには無理があるから他の方法を使いなさいよー、という事ですね。書籍では、具体的にコード例を示しながら、逐次処理でやっていた内容が最終的に非常にシンプルに実装される過程を一つ一つ確認できます。シェルスクリプトの書き方についての原理原則を、非常にわかりやすく説明してくれている章だったので感銘を受けました。この章は、本当によくできていると思います。大量のファイルやデータを処理する時に、OS上のキャッシュの使い方や、シェルスクリプトにおける並列処理などの方法が解説された章。単純にファイルコピーをパフォーマンス計測する場合でも、OS上のコピー対象ファイルのキャッシュ有無で全くパフォーマンスが異なる事実。キャッシュの確認、および開放方法などが紹介されています。0この辺に絡めて、コマンド実行中のtopコマンドによるメモリ使用量の把握方法などが解説されています。大量のファイルを扱う処理を記述する時のジレンマについても、凄くリアルに書かれていて共感します。ここも面白かったので、ちょっと長いですが引用します。シェルスクリプトもコマンドも使わないと頑なに使って、自分で何かデータ処理のプログラムを書くとしましょう。DRAMの容量を気にするくらいのデータを扱う場合は、コマンドのようにファイルをうまく使う必要があるかもしれません。データの条件抽出などはgrepやawkだけで十分だとすると、余計なコードも書かず、余計なデータも読まず前段にgrepやawkを置いて標準入力を使って読み込むことになります。(中略)・・・・とやっていくと、自然にコマンドのような作りになります。シェルスクリプトで組み合わせてしまい、誓いを破ることになります。いうことをやりだすと、1つの言語で統一したいのにシェルが間に入り込み、コードの管理が大変になって、あまり良いように感じることはないかもしれません。しても普段から端末でコマンドをいじっていると、よほどの理由がなければそうしてしまう引力みたいなものが働きます。多くのプログラミング言語では、型がどうのこうの、ガベージコレクションがどうのこうのと、プロセス中でのメモリの使い方に大きな注意が向けられています。プロセス間の通信やファイルシステムとのつなぎみたいなものはどうしても後付になります。つなぎの仕事は、何をどう文句を言おうがシェルが一番得意なわけです。Linux上でファイルを意識した操作を実装しようとしたとき、シェルで組むか、その他のスクリプト言語などで組むか迷う場合も結構あるんじゃないでしょうか。自分も、AWS関連の処理を組む時に、Pythonかbashを使うか迷うときがよくあります。そんな時、上記で引用した「プロセス間の通信やファイルシステムとのつなぎみたいなものは、何をどう文句を言おうがシェルが一番得意なわけです。」を意識して、実装指針を選択すると良さそうです。この章の後半では、xargsを利用した処理の並列化や、それが有効な状況などについて詳しく触れられているので、普段から大きなデータをコマンドラインで処理している人には、有用な内容かと思います。「それ、シェルスクリプトでやるのか?」っという内容ですが、curlやwgetやjqや、XML/HTMLパーサのxmllint等の代表的な使い方が紹介されています。取得したHTMLを上記コマンドや、awkや、grepや、sedを利用した文字列の整形を順を追って確認できるので、シェルスクリプトでやる代表的な文字列処理を、順を追って確認できます。Webから情報を持ってきてあれこれ整形して表示するという、面白げなユースケースで関連知識を体験できるので面白い章でした。実際にスクレイピングするなら、PythonなりRubyなりもっと向いている言語が山のようにあると思いますが、シェルスクリプトで実装する代表的な処理が、身近な題材を元に挙げられているので、非常に参考になります。シェルスクリプトのあるあるがコンパクトに纏まった特集いやぁ、面白い特集でした。シェルスクリプトはなぜこんなに書きにくいのか!?」がドツボにはまりました。今までモヤッとしてたことが、非常に明快に説明されていたので、これから先、シェルスクリプトで組むべきかそうじゃないのか?という判断を、もっと正確にできるようになる気がします。普段シェルスクリプトを触っている人で、いまいちその使いこなしに納得が行かない人には、参考になる内容がいろいろ網羅されていると思うので、一度手にとってみてはいかがでしょうか。¥1,318(2018年1月6日10時30分時点の価格)Amazonで詳細を見るそれでは、今日はこのへんで。濱田(@hamako9999)でした。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。今日はオフィスに用があるので、通勤ラッシュを避けて出社しました。この子は新メンバーのさめくんです。在宅勤務が推奨されているのでオフィスが閑散としており、すこしさみしそうです。使いたいときの注意点を書きました。本が出ていたので読んでみたところよかったので紹介させていただきます。