1978年神奈川県生まれ。電気通信大学電気通信学部情報工学科卒。2009年に株式会社えにしテックを設立。2011年からは一般社団法人日本Rubyの会の理事も務める。 近著に『ソフトウェアアーキテクチャ・ハードパーツ』(オライリージャパン、翻訳)『ソフトウェアアーキテクチャの基礎』(オライリージャパン、翻訳)『ユニコーン企業のひみつ』(オライリージャパン、共訳)、『モノリスからマイクロサービスへ』(オライリージャパン、翻訳)など。
@hirose31 さんが「シェルスクリプトでハマった件→【募】ステキな回避方法」でお題を出されていて、それに回答してみました。 その内容はリンク先を見てもらうとして、回答の中で使ったbashのプロセス置換について書かれた記事をあまり見ないので、回答で使ったプロセス置換のことをエントリにしてみたいと思います。 最初に注意点ですが、プロセス置換の機能は、bashやzsh*1の機能でPOSIX互換の機能ではありません。そのため、使用時には、対応していないシェルでは使えませんし、bashで使う場合も /bin/sh ではなく /bin/bash を明示的に指定する必要があります。たとえば、プロセス置換を使ったスクリプト「script.sh」に対して"$ bash script.sh" というコマンドは成功しますが、"$ sh script.sh" というコマンドは失敗します。この辺りの違いは「/
追記: 解答編を下の方に書きました!!! 追記: お題に不備があったので変更しました>< あとgistに一式置いたので簡単にテストできます!! https://gist.github.com/hirose31/6232206 git clone https://gist.github.com/6232206.git oreno cd oreno ./test.sh source_me.sh ... シェルは GNU bash, version 4.1.5(1)-release です。 こんな source_me.sh と、 case $PATH in */oreno/bin*) : # do nothing ;; *) . orenorc LOADED_ORENO=1; export LOADED_ORENO ;; esac orenorc ってファイルがあって、 ORENO_HOME="
プロセス置き換えとか、名前付きパイプとか、とても便利な機能なのだけど、その仕組みはどうなっているのだろう?断片的な知識ばかりでは、その核心にはなかなか辿り着けない。サンプルコードの真似はできるけど、それ以上の発想はできない...。もっと根本的なところからちゃんと理解しておかないと、いつまでたってもコマンドの使い方の本質が理解できないと感じた。プロセスとは何か?パイプとは何か?リダイレクションとは何か?ファイルディスクリプタとは何か?可能な限りその本質を探ってみようと思う。 UNIXのプロセス UNIXでは、複数のユーザーがログインした状態で、同時に複数の処理を依頼される状況が多々ある。 ところが、どんなに高性能なCPUであっても、ある瞬間に処理できるのはたった1つの処理だけである。 そんな時OSは、それぞれの処理に必要なメモリ領域を割り当てて、CPUをタイミングよく切り替えながら同時並行的
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く