[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2ch.scのread.cgiへ]
Update time : 01/12 09:15 / Filesize : 284 KB / Number-of Response : 907
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合 その29



196 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 08:48:03.27 ID:bSHFQ9XI0.net]
>>195
ストリーミング指向と制御文はあまり関係ないと思うよ
流れてくるものに対してなにか処理をしたいなら必ず
制御文を使うことになるし

ストリーミング指向の話をするなら、関数呼び出しし結果の標準出力を
変数にキャプチャするっていうのはストリーミング指向と反してると思う
例えば result=$(command "$data") みたいな形のことね
俺もこの書き方はなるべく避けるようになった

ストリーミング指向的には echo "$data" | command | 別のなにか
とするほうが良いだろう

ただ気づいたのがこの形だとサブシェルになってしまうから、
commandや別のなにかから、呼び出しの起点にデータを戻すことが
簡単にはできないという所。値を戻すこと自体がストリーミングの流れに反しているし
かと言ってそれが必要な場合もある。例えば処理した行数をカウントしたりとかね。

なので最近はイベントハンドラ方式を使うようになった
echo "$data" | command "別のなにか(関数名)" (または command "$data" "別のなにか")

例えばだけどこんな感じにして、commandで$dataを1行ずつ処理して
その都度、別のなにか(関数)を呼び出す。そうするとサブシェルにはならないので
ストリーミングで処理しつつ、グローバル変数経由で呼び出し元に結果を返すことができる

この時、別の何かがシェル関数の場合に、commandが外部コマンドだとシェル関数を呼び出せないので
連鎖的にcommandもシェル関数として実装。みたいなこともやってたりする






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<284KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef