<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Latest comments for language 'Bash' on doukaku.org</title><link>http://ja.doukaku.org/lang/bash/</link><description>Latest comments for language 'Bash' on doukaku.org(long)</description><language>ja</language><lastBuildDate>Sat, 22 Nov 2008 19:49:09 -0000</lastBuildDate><item><title>emasaka's comment on 島の数をカウントする
</title><link>http://ja.doukaku.org/comment/8060/</link><description>



&lt;a href="http://ja.doukaku.org/219/"&gt;島の数をカウントする&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/219/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/219/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;標準入力→標準出力です。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash &lt;/span&gt;
&lt;span class="nb"&gt;declare&lt;/span&gt; -a ISLANDS_WHITE
&lt;span class="nb"&gt;declare&lt;/span&gt; -a ISLANDS_BLACK

&lt;span class="k"&gt;function &lt;/span&gt;expand_islands&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local&lt;/span&gt; -i &lt;span class="nv"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
    &lt;span class="nb"&gt;local&lt;/span&gt; -i &lt;span class="nv"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;bw&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$3&lt;/span&gt;

    &lt;span class="nb"&gt;local&lt;/span&gt; -a islands
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$bw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; □ &lt;span class="o"&gt;]&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;islands&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;${ISLANDS_WHITE[@]}&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;islands&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;${ISLANDS_BLACK[@]}&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;local &lt;/span&gt;p found
    &lt;span class="nb"&gt;local&lt;/span&gt; -i i &lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;islands&lt;/span&gt;&lt;span class="p"&gt;[@]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 0; i &amp;lt; &lt;span class="nv"&gt;$n&lt;/span&gt;; i++&lt;span class="o"&gt;))&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;        for &lt;/span&gt;p in &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;islands&lt;/span&gt;&lt;span class="p"&gt;[i]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;            &lt;/span&gt;&lt;span class="nb"&gt;local&lt;/span&gt; -i &lt;span class="nv"&gt;px&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;p&lt;/span&gt;&lt;span class="p"&gt;%,*&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt; &lt;span class="nv"&gt;py&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;p&lt;/span&gt;&lt;span class="p"&gt;#*,&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(((&lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; px &amp;amp;&amp;amp; &lt;span class="nv"&gt;y&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; py + 1&lt;span class="o"&gt;)&lt;/span&gt; ||
                 &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;y&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; py &amp;amp;&amp;amp; &lt;span class="nv"&gt;x&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; px + 1&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;                if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -z &lt;span class="s2"&gt;&amp;quot;$found&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;                    &lt;/span&gt;islands&lt;span class="o"&gt;[&lt;/span&gt;i&lt;span class="o"&gt;]=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;${islands[i]} $x,$y&amp;quot;&lt;/span&gt;
                    &lt;span class="nv"&gt;found&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;
                &lt;span class="k"&gt;else&lt;/span&gt;    &lt;span class="c"&gt;# join two islands&lt;/span&gt;
                    islands&lt;span class="o"&gt;[&lt;/span&gt;found&lt;span class="o"&gt;]=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;${islands[found]} ${islands[i]} $x,$y&amp;quot;&lt;/span&gt;
                    &lt;span class="nb"&gt;unset &lt;/span&gt;islands&lt;span class="o"&gt;[&lt;/span&gt;i&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;                &lt;/span&gt;&lt;span class="nb"&gt;break&lt;/span&gt;
&lt;span class="nb"&gt;            &lt;/span&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;        done&lt;/span&gt;
&lt;span class="k"&gt;    done&lt;/span&gt;
    &lt;span class="o"&gt;[&lt;/span&gt; -z &lt;span class="s2"&gt;&amp;quot;$found&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &amp;amp;&amp;amp; &lt;span class="nv"&gt;islands&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;${islands[@]}&amp;quot;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$x,$y&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;        &lt;span class="c"&gt;# new island&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$bw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; □ &lt;span class="o"&gt;]&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;ISLANDS_WHITE&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;${islands[@]}&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;ISLANDS_BLACK&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;${islands[@]}&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;function &lt;/span&gt;check_islands&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;line
    &lt;span class="nb"&gt;local&lt;/span&gt; -i &lt;span class="nv"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0
    &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nb"&gt;read&lt;/span&gt; -r line; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;local&lt;/span&gt; -i x
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 0; x &amp;lt; &lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;line&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;; x++&lt;span class="o"&gt;))&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;            &lt;/span&gt;expand_islands &lt;span class="nv"&gt;$x&lt;/span&gt; &lt;span class="nv"&gt;$y&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;line&lt;/span&gt;&lt;span class="p"&gt;:$x:&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;done&lt;/span&gt;
        &lt;span class="o"&gt;((&lt;/span&gt;y++&lt;span class="o"&gt;))&lt;/span&gt;
    &lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

check_islands
&lt;span class="nb"&gt;echo&lt;/span&gt; 白の島は&lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;ISLANDS&lt;/span&gt;&lt;span class="p"&gt;_WHITE[@]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; 黒の島は&lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;ISLANDS&lt;/span&gt;&lt;span class="p"&gt;_BLACK[@]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/8060/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/8060/</guid></item><item><title>emasaka's comment on 重複無し乱数
</title><link>http://ja.doukaku.org/comment/8045/</link><description>



&lt;a href="http://ja.doukaku.org/46/"&gt;重複無し乱数&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/46/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/46/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;pre class='compact'&gt;$ bingo 10
2 10 3 5 6 4 1 8 7 9
&lt;/pre&gt;
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;function &lt;/span&gt;bingo&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
    &lt;span class="nb"&gt;local&lt;/span&gt; -a array
    &lt;span class="nb"&gt;local&lt;/span&gt; -i i j tmp

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 0; i &amp;lt; n; i++&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        array&lt;span class="o"&gt;[&lt;/span&gt;i&lt;span class="o"&gt;]=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;i+1&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 0; i &amp;lt; n; i++&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;j&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; RANDOM % &lt;span class="o"&gt;(&lt;/span&gt;i + 1&lt;span class="o"&gt;)&lt;/span&gt;,
          &lt;span class="nv"&gt;tmp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; array&lt;span class="o"&gt;[&lt;/span&gt;i&lt;span class="o"&gt;]&lt;/span&gt;, array&lt;span class="o"&gt;[&lt;/span&gt;i&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; array&lt;span class="o"&gt;[&lt;/span&gt;j&lt;span class="o"&gt;]&lt;/span&gt;, array&lt;span class="o"&gt;[&lt;/span&gt;j&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; tmp&lt;span class="o"&gt;))&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[@]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/8045/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/8045/</guid></item><item><title>emasaka's comment on inline/embeded bytecode assembly
</title><link>http://ja.doukaku.org/comment/8040/</link><description>



&lt;a href="http://ja.doukaku.org/216/"&gt;inline/embeded bytecode assembly&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/216/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/216/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;pre class='compact'&gt;言語がbashだった。別れたい…
bashだとアドレス渡された時なんか恥ずかしいｗｗ
セグフォしちゃうしｗｗ
ポインタにはせめて有効なアドレスを渡して欲しい・・・
カーネル空間を渡されたら・・・・もう最悪ｗｗ
せめて普通にページやマッピングぐらいは考えて欲しい。
常識的に仮想記憶を使って欲しいだけなんです！

# …ネタはさておき。
# スクリプトを実行しているbashに、組み込みコマンドとして
# duffを追加します。
# アセンブリ言語部分はCからgcc -O0 -Sで出力したものです。
&lt;/pre&gt;
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;pgm_dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;mktemp -u /tmp/duff.XXXXXXXXXX&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;pgm_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;duff
&lt;span class="nv"&gt;pgm_source&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;pgm&lt;/span&gt;&lt;span class="p"&gt;_name&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;.s

&lt;span class="o"&gt;(&lt;/span&gt;
    mkdir &lt;span class="nv"&gt;$pgm_dir&lt;/span&gt;
    &lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$pgm_dir&lt;/span&gt;
    cat &amp;gt; &lt;span class="nv"&gt;$pgm_dir&lt;/span&gt;/&lt;span class="nv"&gt;$pgm_source&lt;/span&gt; &amp;lt;&amp;lt;&lt;span class="s1"&gt;&amp;#39;__ASM__&amp;#39;&lt;/span&gt;
        .text
.globl duff_builtin
        .type   duff_builtin, @function
duff_builtin:
        pushl   %ebp
        movl    %esp, %ebp
        pushl   %ebx
        subl    &lt;span class="nv"&gt;$36&lt;/span&gt;, %esp
        call    __i686.get_pc_thunk.bx
        addl    &lt;span class="nv"&gt;$_GLOBAL_OFFSET_TABLE_&lt;/span&gt;, %ebx
        cmpl    &lt;span class="nv"&gt;$0&lt;/span&gt;, 8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        jne     .L2
        call    builtin_usage@PLT
        movl    &lt;span class="nv"&gt;$258&lt;/span&gt;, -28&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        jmp     .L3
.L2:
        movl    8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movl    4&lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movl    &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movl    %eax, &lt;span class="o"&gt;(&lt;/span&gt;%esp&lt;span class="o"&gt;)&lt;/span&gt;
        call    atoi@PLT
        movl    %eax, -8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        movl    8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movl    &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movl    %eax, 8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        cmpl    &lt;span class="nv"&gt;$0&lt;/span&gt;, 8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        jne     .L4
        call    builtin_usage@PLT
        movl    &lt;span class="nv"&gt;$258&lt;/span&gt;, -28&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        jmp     .L3
.L4:
        movl    8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movl    4&lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movl    &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movl    %eax, &lt;span class="o"&gt;(&lt;/span&gt;%esp&lt;span class="o"&gt;)&lt;/span&gt;
        call    atoi@PLT
        movl    %eax, -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        movl    8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movl    &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movl    %eax, 8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        cmpl    &lt;span class="nv"&gt;$0&lt;/span&gt;, 8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        jne     .L5
        call    builtin_usage@PLT
        movl    &lt;span class="nv"&gt;$258&lt;/span&gt;, -28&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        jmp     .L3
.L5:
        movl    8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movl    4&lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movl    &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movl    %eax, &lt;span class="o"&gt;(&lt;/span&gt;%esp&lt;span class="o"&gt;)&lt;/span&gt;
        call    atoi@PLT
        movl    %eax, -16&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        movl    -16&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %edx
        movl    %edx, %eax
        sarl    &lt;span class="nv"&gt;$31&lt;/span&gt;, %eax
        movl    %eax, %ecx
        shrl    &lt;span class="nv"&gt;$29&lt;/span&gt;, %ecx
        leal    &lt;span class="o"&gt;(&lt;/span&gt;%edx,%ecx&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        andl    &lt;span class="nv"&gt;$7&lt;/span&gt;, %eax
        subl    %ecx, %eax
        movl    %eax, -24&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        cmpl    &lt;span class="nv"&gt;$7&lt;/span&gt;, -24&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        ja      .L6
        movl    -24&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        sall    &lt;span class="nv"&gt;$2&lt;/span&gt;, %eax
        movl    .L15@GOTOFF&lt;span class="o"&gt;(&lt;/span&gt;%eax,%ebx&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        addl    %ebx, %eax
        jmp     *%eax
        .section        .rodata
        .align 4
        .align 4
.L15:
        .long   .L7@GOTOFF
        .long   .L8@GOTOFF
        .long   .L9@GOTOFF
        .long   .L10@GOTOFF
        .long   .L11@GOTOFF
        .long   .L12@GOTOFF
        .long   .L13@GOTOFF
        .long   .L14@GOTOFF
        .text
.L7:
        movl    -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movzbl  &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %edx
        movl    -8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movb    %dl, &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;
        addl    &lt;span class="nv"&gt;$1&lt;/span&gt;, -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
.L14:
        movl    -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movzbl  &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %edx
        movl    -8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movb    %dl, &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;
        addl    &lt;span class="nv"&gt;$1&lt;/span&gt;, -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
.L13:
        movl    -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movzbl  &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %edx
        movl    -8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movb    %dl, &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;
        addl    &lt;span class="nv"&gt;$1&lt;/span&gt;, -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
.L12:
        movl    -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movzbl  &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %edx
        movl    -8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movb    %dl, &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;
        addl    &lt;span class="nv"&gt;$1&lt;/span&gt;, -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
.L11:
        movl    -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movzbl  &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %edx
        movl    -8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movb    %dl, &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;
        addl    &lt;span class="nv"&gt;$1&lt;/span&gt;, -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
.L10:
        movl    -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movzbl  &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %edx
        movl    -8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movb    %dl, &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;
        addl    &lt;span class="nv"&gt;$1&lt;/span&gt;, -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
.L9:
        movl    -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movzbl  &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %edx
        movl    -8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movb    %dl, &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;
        addl    &lt;span class="nv"&gt;$1&lt;/span&gt;, -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
.L8:
        movl    -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movzbl  &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;, %edx
        movl    -8&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        movb    %dl, &lt;span class="o"&gt;(&lt;/span&gt;%eax&lt;span class="o"&gt;)&lt;/span&gt;
        addl    &lt;span class="nv"&gt;$1&lt;/span&gt;, -12&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        subl    &lt;span class="nv"&gt;$8&lt;/span&gt;, -16&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        cmpl    &lt;span class="nv"&gt;$0&lt;/span&gt;, -16&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
        jg      .L7
.L6:
        movl    &lt;span class="nv"&gt;$0&lt;/span&gt;, -28&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;
.L3:
        movl    -28&lt;span class="o"&gt;(&lt;/span&gt;%ebp&lt;span class="o"&gt;)&lt;/span&gt;, %eax
        addl    &lt;span class="nv"&gt;$36&lt;/span&gt;, %esp
        popl    %ebx
        popl    %ebp
        ret
        .size   duff_builtin, .-duff_builtin
.globl duff_doc
        .section        .rodata
.LC0:
        .string &lt;span class="s2"&gt;&amp;quot;Duff&amp;#39;s device implementation&amp;quot;&lt;/span&gt;
        .section        .data.rel.local,&lt;span class="s2"&gt;&amp;quot;aw&amp;quot;&lt;/span&gt;,@progbits
        .align 4
        .type   duff_doc, @object
        .size   duff_doc, 8
duff_doc:
        .long   .LC0
        .long   0
.globl duff_struct
        .section        .rodata
.LC1:
        .string &lt;span class="s2"&gt;&amp;quot;duff&amp;quot;&lt;/span&gt;
.LC2:
        .string &lt;span class="s2"&gt;&amp;quot;duff to from count&amp;quot;&lt;/span&gt;
        .section        .data.rel,&lt;span class="s2"&gt;&amp;quot;aw&amp;quot;&lt;/span&gt;,@progbits
        .align 4
        .type   duff_struct, @object
        .size   duff_struct, 24
duff_struct:
        .long   .LC1
        .long   duff_builtin
        .long   1
        .long   duff_doc
        .long   .LC2
        .long   0
        .section        .text.__i686.get_pc_thunk.bx,&lt;span class="s2"&gt;&amp;quot;axG&amp;quot;&lt;/span&gt;,@progbits,__i686.get_pc_thunk.bx,comdat
.globl __i686.get_pc_thunk.bx
        .hidden __i686.get_pc_thunk.bx
        .type   __i686.get_pc_thunk.bx, @function
__i686.get_pc_thunk.bx:
        movl    &lt;span class="o"&gt;(&lt;/span&gt;%esp&lt;span class="o"&gt;)&lt;/span&gt;, %ebx
        ret
        .section        .note.GNU-stack,&lt;span class="s2"&gt;&amp;quot;&amp;quot;&lt;/span&gt;,@progbits
__ASM__

    cc -shared -o &lt;span class="nv"&gt;$pgm_name&lt;/span&gt; &lt;span class="nv"&gt;$pgm_source&lt;/span&gt;
&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="nb"&gt;enable&lt;/span&gt; -f &lt;span class="nv"&gt;$pgm_dir&lt;/span&gt;/&lt;span class="nv"&gt;$pgm_name&lt;/span&gt; &lt;span class="nv"&gt;$pgm_name&lt;/span&gt;
rm -rf &lt;span class="nv"&gt;$pgm_dir&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/8040/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/8040/</guid></item><item><title>emasaka's comment on RFC 4180対応版 CSVレコードの分解
</title><link>http://ja.doukaku.org/comment/8039/</link><description>



&lt;a href="http://ja.doukaku.org/33/"&gt;RFC 4180対応版 CSVレコードの分解&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/33/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/33/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;標準入力→標準出力です。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;function &lt;/span&gt;splitCSV&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;c in_dq after_dq
    &lt;span class="nb"&gt;local&lt;/span&gt; -i &lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0

    &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nb"&gt;read&lt;/span&gt; -n &lt;span class="m"&gt;1&lt;/span&gt; c; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;        if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -z &lt;span class="s2"&gt;&amp;quot;$in_req&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;            &lt;/span&gt;&lt;span class="nv"&gt;in_req&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
            &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;$((++count)) =&amp;gt; &amp;quot;&lt;/span&gt;
        &lt;span class="k"&gt;fi&lt;/span&gt;

        : &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;c&lt;/span&gt;&lt;span class="p"&gt;:=$&amp;#39;\n&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;   &lt;span class="c"&gt;# 改行は空文字として読まれる&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$c&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; \&lt;span class="s2"&gt;&amp;quot; ]; then&lt;/span&gt;
&lt;span class="s2"&gt;            if [ -n &amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$after_dq&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot; ]; then&lt;/span&gt;
&lt;span class="s2"&gt;                echo -n \&amp;quot;&lt;/span&gt;
&lt;span class="s2"&gt;                after_dq=&amp;#39;&amp;#39;&lt;/span&gt;
&lt;span class="s2"&gt;            else&lt;/span&gt;
&lt;span class="s2"&gt;                after_dq=1&lt;/span&gt;
&lt;span class="s2"&gt;            fi&lt;/span&gt;
&lt;span class="s2"&gt;        else&lt;/span&gt;
&lt;span class="s2"&gt;            if [ -n &amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$after_dq&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot; ]; then&lt;/span&gt;
&lt;span class="s2"&gt;                after_dq=&amp;#39;&amp;#39;&lt;/span&gt;
&lt;span class="s2"&gt;                if [ -n &amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$in_dq&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot; ]; then&lt;/span&gt;
&lt;span class="s2"&gt;                    in_dq=&amp;#39;&amp;#39;&lt;/span&gt;
&lt;span class="s2"&gt;                else&lt;/span&gt;
&lt;span class="s2"&gt;                    in_dq=1&lt;/span&gt;
&lt;span class="s2"&gt;                fi&lt;/span&gt;
&lt;span class="s2"&gt;            fi&lt;/span&gt;

&lt;span class="s2"&gt;            if [ -z &amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$in_dq&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot; -a \( &amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$c&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot; = , -o &amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$c&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot; = $&amp;#39;\n&amp;#39; \) ]; then&lt;/span&gt;
&lt;span class="s2"&gt;                in_req=&amp;#39;&amp;#39;&lt;/span&gt;
&lt;span class="s2"&gt;                echo&lt;/span&gt;
&lt;span class="s2"&gt;            else&lt;/span&gt;
&lt;span class="s2"&gt;                echo -n &amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$c&lt;/span&gt;&lt;span class="err"&gt;&amp;quot;&lt;/span&gt;
            &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;        fi&lt;/span&gt;
&lt;span class="k"&gt;    done&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/8039/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/8039/</guid></item><item><title>emasaka's comment on 日本語メールのエンコード
</title><link>http://ja.doukaku.org/comment/8028/</link><description>



&lt;a href="http://ja.doukaku.org/24/"&gt;日本語メールのエンコード&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/24/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/24/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;pre class='compact'&gt;ヘッダのエンコードに適切なコマンドが見つからなかったので、
nkfと正規表現で実装しました。
入力はUTF-8を前提にしています。

$ cat sample.tmpl
From: [[from]]
To: [[to]]
Subject: [[name]]さんにメッセージが届いています

[[name]]さんに[[fromname]]さんからメッセージが届いています。
以下のURLからアクセスできます。
[[url]]
$ cat sampe.conf
from='from@example.org'
to='to@example.org'
name='どう書く'
fromname='管理者'
url='http://ja.doukaku.org/'
$ bash mailencode.bash sample.conf sample.tmpl | cat -v
From: from@example.org^M
To: ^[$B$*$l^[(B &amp;lt;to@example.org&amp;gt;^M
Subject: ^[$B$I$&amp;amp;=q$/$5$s$K%a%C%;!&amp;lt;%8$,FO$$$F$$$^$9^[(B^M
Date: Wed, 12 Nov 2008 20:13:08 +0900^M
Message-ID: &amp;lt;hoge.1226488388.6361.7459@example.jp&amp;gt;^M
MIME-Version: 1.0^M
Content-Type: text/plain; charset="ISO-2022-JP"^M
Content-Transfer-Encoding: 7bit^M
^M
^[$B$I$&amp;amp;=q$/$5$s$K4IM}&amp;lt;T$5$s$+$i%a%C%;!&amp;lt;%8$,FO$$$F$$$^$9!#^[(B^M
^[$B0J2&amp;lt;$N^[(BURL^[$B$+$i%"%/%;%9$G$-$^$9!#^[(B^M
http://ja.doukaku.org/^M
&lt;/pre&gt;
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;declare &lt;/span&gt;tmpl_sedcmd

&lt;span class="k"&gt;function &lt;/span&gt;quotemeta&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;          &lt;span class="c"&gt;# just workaround&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$1&amp;quot;&lt;/span&gt; | sed -e &lt;span class="s1"&gt;&amp;#39;s|[]/.?*[]|\\&amp;amp;|g&amp;#39;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;function &lt;/span&gt;load_conf&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;

    &lt;span class="nb"&gt;local &lt;/span&gt;s
    &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nb"&gt;read&lt;/span&gt; -r s; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;local _CONF_$s&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;done&lt;/span&gt; &amp;lt; &lt;span class="nv"&gt;$file&lt;/span&gt;

    &lt;span class="nb"&gt;local &lt;/span&gt;v
    &lt;span class="k"&gt;for &lt;/span&gt;v in &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="p"&gt;!_CONF_*&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;quotemeta &lt;span class="s2"&gt;&amp;quot;[[${v#_CONF_}]]&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
        &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;quotemeta &lt;span class="s2"&gt;&amp;quot;${!v}&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
        &lt;span class="nv"&gt;tmpl_sedcmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;$tmpl_sedcmd;s/$b/$a/g&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;function &lt;/span&gt;b_encode&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;

    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="nv"&gt;$text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ &lt;span class="o"&gt;([&lt;/span&gt; -~&lt;span class="o"&gt;]&lt;/span&gt;*&lt;span class="o"&gt;)([&lt;/span&gt;^ -~&lt;span class="o"&gt;][&lt;/span&gt;^ -~&lt;span class="o"&gt;]&lt;/span&gt;*&lt;span class="o"&gt;)(&lt;/span&gt;.*&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;${BASH_REMATCH[1]}&amp;quot;&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;${BASH_REMATCH[2]}&amp;quot;&lt;/span&gt; | nkf -Wj | nkf -M
        &lt;span class="nv"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;BASH&lt;/span&gt;&lt;span class="p"&gt;_REMATCH[3]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$text&amp;quot;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="nb"&gt;readonly &lt;/span&gt;&lt;span class="nv"&gt;ex_headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;MIME-Version: 1.0&lt;/span&gt;
&lt;span class="s1"&gt;Content-Type: text/plain; charset=&amp;quot;ISO-2022-JP&amp;quot;&lt;/span&gt;
&lt;span class="s1"&gt;Content-Transfer-Encoding: 7bit&amp;#39;&lt;/span&gt;

&lt;span class="k"&gt;function &lt;/span&gt;header&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;s
    &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nb"&gt;read&lt;/span&gt; -r s; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="o"&gt;[&lt;/span&gt; -z &lt;span class="s2"&gt;&amp;quot;$s&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &amp;amp;&amp;amp; &lt;span class="nb"&gt;break&lt;/span&gt;
&lt;span class="nb"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$s&amp;quot;&lt;/span&gt; | sed -e &lt;span class="s2"&gt;&amp;quot;$tmpl_sedcmd&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
        b_encode &lt;span class="s2"&gt;&amp;quot;$s&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Date: $(date -R)&amp;quot;&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Message-ID: &amp;lt;$(hostname).$(date +%s).$$.$RANDOM@$(hostname -f)&amp;gt;&amp;quot;&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$ex_headers&amp;quot;&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;function &lt;/span&gt;body&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    sed -e &lt;span class="s2"&gt;&amp;quot;$tmpl_sedcmd&amp;quot;&lt;/span&gt; | nkf -Wj
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="nv"&gt;conf&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
&lt;span class="nv"&gt;templ&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
load_conf &lt;span class="nv"&gt;$conf&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt; header; body; &lt;span class="o"&gt;}&lt;/span&gt; &amp;lt; &lt;span class="nv"&gt;$templ&lt;/span&gt; | nkf -Lw
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/8028/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/8028/</guid></item><item><title>emasaka's comment on 逆順になるあみだくじ
</title><link>http://ja.doukaku.org/comment/8014/</link><description>



&lt;a href="http://ja.doukaku.org/20/"&gt;逆順になるあみだくじ&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/20/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/20/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;function &lt;/span&gt;amida&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;

    &lt;span class="nb"&gt;local&lt;/span&gt; -i i
    &lt;span class="nb"&gt;local&lt;/span&gt; -a ary
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 0; i &amp;lt; n; i++&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        ary&lt;span class="o"&gt;[&lt;/span&gt;i&lt;span class="o"&gt;]=&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;%d &amp;#39;&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ary&lt;/span&gt;&lt;span class="p"&gt;[@]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt;

&lt;span class="nb"&gt;    local&lt;/span&gt; -i &lt;span class="nv"&gt;row_changed&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="nv"&gt;left_changed&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;row_changed !&lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="o"&gt;))&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;row_changed&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 0; i &amp;lt; n - &lt;span class="m"&gt;1&lt;/span&gt; ; i++&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s1"&gt;&amp;#39;|&amp;#39;&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;left_changed&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &amp;amp;&amp;amp; ary&lt;span class="o"&gt;[&lt;/span&gt;i&lt;span class="o"&gt;]&lt;/span&gt; &amp;lt; ary&lt;span class="o"&gt;[&lt;/span&gt;i+1&lt;span class="o"&gt;]))&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;                &lt;/span&gt;&lt;span class="nb"&gt;local&lt;/span&gt; -i &lt;span class="nv"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ary&lt;/span&gt;&lt;span class="p"&gt;[i]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
                ary&lt;span class="o"&gt;[&lt;/span&gt;i&lt;span class="o"&gt;]=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ary&lt;/span&gt;&lt;span class="p"&gt;[i+1]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
                ary&lt;span class="o"&gt;[&lt;/span&gt;i+1&lt;span class="o"&gt;]=&lt;/span&gt;&lt;span class="nv"&gt;$tmp&lt;/span&gt;
                &lt;span class="nv"&gt;left_changed&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
                &lt;span class="nv"&gt;row_changed&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
                &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s1"&gt;&amp;#39;_&amp;#39;&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt;
&lt;span class="k"&gt;                &lt;/span&gt;&lt;span class="nv"&gt;left_changed&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0
                &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s1"&gt;&amp;#39; &amp;#39;&lt;/span&gt;
            &lt;span class="k"&gt;fi&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;|&amp;#39;&lt;/span&gt;
    &lt;span class="k"&gt;done&lt;/span&gt;

&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;%d &amp;#39;&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ary&lt;/span&gt;&lt;span class="p"&gt;[@]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

amida &lt;span class="nv"&gt;$1&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/8014/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/8014/</guid></item><item><title>emasaka's comment on 疑似並行処理
</title><link>http://ja.doukaku.org/comment/7990/</link><description>



&lt;a href="http://ja.doukaku.org/215/"&gt;疑似並行処理&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/215/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/215/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;さらに変形して継続渡しもどきに。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

A&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
  &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;cont&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;i &amp;lt;&lt;span class="o"&gt;=&lt;/span&gt; 10&lt;span class="o"&gt;))&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;i++&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;$cont&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
      &lt;span class="nv"&gt;$cont&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$FUNCNAME $i&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
      &lt;span class="nv"&gt;$FUNCNAME&lt;/span&gt; &lt;span class="nv"&gt;$i&lt;/span&gt;
    &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;  else&lt;/span&gt;
    &lt;span class="o"&gt;[&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;$cont&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &amp;amp;&amp;amp; &lt;span class="nv"&gt;$cont&lt;/span&gt;
  &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="nv"&gt;CHARS&lt;/span&gt;&lt;span class="o"&gt;=({&lt;/span&gt;a..j&lt;span class="o"&gt;})&lt;/span&gt;

B&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
  &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;cont&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;i &amp;lt; &lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;CHARS&lt;/span&gt;&lt;span class="p"&gt;[@]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CHARS&lt;/span&gt;&lt;span class="p"&gt;[i++]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;$cont&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
      &lt;span class="nv"&gt;$cont&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$FUNCNAME $i&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
      &lt;span class="nv"&gt;$FUNCNAME&lt;/span&gt; &lt;span class="nv"&gt;$i&lt;/span&gt;
    &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;  else&lt;/span&gt;
    &lt;span class="o"&gt;[&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;$cont&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &amp;amp;&amp;amp; &lt;span class="nv"&gt;$cont&lt;/span&gt;
  &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

A &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;B 0&amp;#39;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7990/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7990/</guid></item><item><title>emasaka's comment on 疑似並行処理
</title><link>http://ja.doukaku.org/comment/7989/</link><description>



&lt;a href="http://ja.doukaku.org/215/"&gt;疑似並行処理&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/215/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/215/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;sleepをreturnに変えたら、疑似並行処理なコルーチンみたいなのになりました。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

A&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;i &amp;lt;&lt;span class="o"&gt;=&lt;/span&gt; 10&lt;span class="o"&gt;))&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;i++&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;
&lt;span class="k"&gt;  done&lt;/span&gt;
&lt;span class="k"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;DONE
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="nv"&gt;CHARS&lt;/span&gt;&lt;span class="o"&gt;=({&lt;/span&gt;a..j&lt;span class="o"&gt;})&lt;/span&gt;

B&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;j &amp;lt; &lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;CHARS&lt;/span&gt;&lt;span class="p"&gt;[@]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CHARS&lt;/span&gt;&lt;span class="p"&gt;[j++]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;
&lt;span class="k"&gt;  done&lt;/span&gt;
&lt;span class="k"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;j&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;DONE
&lt;span class="o"&gt;}&lt;/span&gt;

doit&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
  &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;j&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0
  
  &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$i&lt;/span&gt; !&lt;span class="o"&gt;=&lt;/span&gt; DONE -a &lt;span class="nv"&gt;$j&lt;/span&gt; !&lt;span class="o"&gt;=&lt;/span&gt; DONE &lt;span class="o"&gt;]&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$i&lt;/span&gt; !&lt;span class="o"&gt;=&lt;/span&gt; DONE &lt;span class="o"&gt;]&lt;/span&gt; &amp;amp;&amp;amp; A
    &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$j&lt;/span&gt; !&lt;span class="o"&gt;=&lt;/span&gt; DONE &lt;span class="o"&gt;]&lt;/span&gt; &amp;amp;&amp;amp; B
  &lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

doit
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7989/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7989/</guid></item><item><title>emasaka's comment on 疑似並行処理
</title><link>http://ja.doukaku.org/comment/7965/</link><description>



&lt;a href="http://ja.doukaku.org/215/"&gt;疑似並行処理&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/215/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/215/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;起動あたりの影響を受けずに混ざって出力されるよう、sleep 1しています。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

A&lt;span class="o"&gt;(){&lt;/span&gt;
  &lt;span class="nb"&gt;local &lt;/span&gt;i
  &lt;span class="k"&gt;for &lt;/span&gt;i in &lt;span class="o"&gt;{&lt;/span&gt;1..10&lt;span class="o"&gt;}&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$i&lt;/span&gt;
    sleep 1
  &lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

B&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="nb"&gt;local &lt;/span&gt;i
  &lt;span class="k"&gt;for &lt;/span&gt;i in &lt;span class="o"&gt;{&lt;/span&gt;a..j&lt;span class="o"&gt;}&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$i&lt;/span&gt;
    sleep 1
  &lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

A &amp;amp; B
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7965/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7965/</guid></item><item><title>emasaka's comment on XMLから情報を取り出す
</title><link>http://ja.doukaku.org/comment/7962/</link><description>



&lt;a href="http://ja.doukaku.org/19/"&gt;XMLから情報を取り出す&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/19/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/19/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;正規表現で。bash 3.0以降。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$data&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$d&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ \&amp;lt;lastBuildDate\&amp;gt;&lt;span class="o"&gt;([&lt;/span&gt;^&amp;lt;&lt;span class="o"&gt;]&lt;/span&gt;*&lt;span class="o"&gt;)&lt;/span&gt;\&amp;lt;/lastBuildDate\&amp;gt;&lt;span class="o"&gt;(&lt;/span&gt;.*&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;BASH&lt;/span&gt;&lt;span class="p"&gt;_REMATCH[1]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
    &lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;BASH&lt;/span&gt;&lt;span class="p"&gt;_REMATCH[2]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7962/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7962/</guid></item><item><title>emasaka's comment on 入出力の中継
</title><link>http://ja.doukaku.org/comment/7960/</link><description>



&lt;a href="http://ja.doukaku.org/11/"&gt;入出力の中継&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/11/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/11/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;FIFO（名前つきパイプ）を使いました。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nv"&gt;cmd_a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
&lt;span class="nv"&gt;cmd_b&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;

&lt;span class="nv"&gt;PIPE_B2A&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;mktemp -u /tmp/pipe_b2a.XXXXXXXXXX&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;trap&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;rm -f $PIPE_B2A; exit&amp;quot;&lt;/span&gt; EXIT
mkfifo &lt;span class="nv"&gt;$PIPE_B2A&lt;/span&gt;

&lt;span class="nv"&gt;$cmd_a&lt;/span&gt; &amp;lt; &lt;span class="nv"&gt;$PIPE_B2A&lt;/span&gt; | &lt;span class="nv"&gt;$cmd_b&lt;/span&gt; &amp;gt; &lt;span class="nv"&gt;$PIPE_B2A&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7960/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7960/</guid></item><item><title>emasaka's comment on n人中m人が当選するくじ
</title><link>http://ja.doukaku.org/comment/7949/</link><description>



&lt;a href="http://ja.doukaku.org/4/"&gt;n人中m人が当選するくじ&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/4/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/4/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="k"&gt;function &lt;/span&gt;randsample&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
    &lt;span class="nb"&gt;local&lt;/span&gt; -a array
    &lt;span class="nb"&gt;local&lt;/span&gt; -i i j tmp

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 0; i &amp;lt; n; i++&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        array&lt;span class="o"&gt;[&lt;/span&gt;i&lt;span class="o"&gt;]=&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="c"&gt;# shuffle&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 0; i &amp;lt; n; i++&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;j&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; RANDOM % &lt;span class="o"&gt;(&lt;/span&gt;i + 1&lt;span class="o"&gt;)&lt;/span&gt;,
          &lt;span class="nv"&gt;tmp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; array&lt;span class="o"&gt;[&lt;/span&gt;i&lt;span class="o"&gt;]&lt;/span&gt;, array&lt;span class="o"&gt;[&lt;/span&gt;i&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; array&lt;span class="o"&gt;[&lt;/span&gt;j&lt;span class="o"&gt;]&lt;/span&gt;, array&lt;span class="o"&gt;[&lt;/span&gt;j&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; tmp&lt;span class="o"&gt;))&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="c"&gt;# print top m&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 0; i &amp;lt; m &amp;amp;&amp;amp; i &amp;lt; n; i++&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[i]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

randsample &lt;span class="m"&gt;100&lt;/span&gt; 10
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7949/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7949/</guid></item><item><title>emasaka's comment on コインを減らす払い方
</title><link>http://ja.doukaku.org/comment/7947/</link><description>



&lt;a href="http://ja.doukaku.org/3/"&gt;コインを減らす払い方&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/3/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/3/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;#63の写経です。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nb"&gt;readonly &lt;/span&gt;&lt;span class="nv"&gt;coins&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;1 5 10 50 100 500&amp;#39;&lt;/span&gt;
&lt;span class="nb"&gt;readonly &lt;/span&gt;&lt;span class="nv"&gt;coins_rev&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;500 100 50 10 5 1&amp;#39;&lt;/span&gt;

&lt;span class="k"&gt;function &lt;/span&gt;changes&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local&lt;/span&gt; -i &lt;span class="nv"&gt;total&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
    &lt;span class="nb"&gt;local&lt;/span&gt; -i coin num
    &lt;span class="k"&gt;for &lt;/span&gt;coin in &lt;span class="nv"&gt;$coins_rev&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;        if&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;total &amp;gt;&lt;span class="o"&gt;=&lt;/span&gt; coin&lt;span class="o"&gt;))&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
            &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; total / coin, &lt;span class="nv"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; total - coin * num&lt;span class="o"&gt;))&lt;/span&gt;
            &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;$coin=$num &amp;quot;&lt;/span&gt;
        &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;    done&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;function &lt;/span&gt;pay&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local&lt;/span&gt; -i &lt;span class="nv"&gt;expence&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;wallet&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
    &lt;span class="nb"&gt;local&lt;/span&gt; -i &lt;span class="nv"&gt;total&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; coin num
    &lt;span class="nb"&gt;local &lt;/span&gt;item var

    &lt;span class="k"&gt;for &lt;/span&gt;item in &lt;span class="nv"&gt;$wallet&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;eval local &lt;/span&gt;wallet_&lt;span class="nv"&gt;$item&lt;/span&gt;
        &lt;span class="nb"&gt;eval local &lt;/span&gt;payment_&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;item&lt;/span&gt;&lt;span class="p"&gt;%=*&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;done&lt;/span&gt;

&lt;span class="k"&gt;    for &lt;/span&gt;coin in &lt;span class="nv"&gt;$coins&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;var&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;wallet_&lt;span class="nv"&gt;$coin&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;${!var}&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;            &lt;/span&gt;&lt;span class="nb"&gt;local&lt;/span&gt; -i &lt;span class="nv"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;((&lt;/span&gt;expence - total&lt;span class="k"&gt;)&lt;/span&gt; / coin + 1&lt;span class="o"&gt;))&lt;/span&gt;
            &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; r &amp;lt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="p"&gt;!var&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt; ? r : &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="p"&gt;!var&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
            &lt;span class="nb"&gt;eval &lt;/span&gt;payment_&lt;span class="nv"&gt;$coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$num&lt;/span&gt;
            &lt;span class="o"&gt;((&lt;/span&gt;total +&lt;span class="o"&gt;=&lt;/span&gt; coin * num&lt;span class="o"&gt;))&lt;/span&gt;
            &lt;span class="o"&gt;((&lt;/span&gt;total &amp;gt;&lt;span class="o"&gt;=&lt;/span&gt; expence&lt;span class="o"&gt;))&lt;/span&gt; &amp;amp;&amp;amp; &lt;span class="nb"&gt;break&lt;/span&gt;
&lt;span class="nb"&gt;        &lt;/span&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;    done&lt;/span&gt;

&lt;span class="k"&gt;    if&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;total &amp;gt; expence&lt;span class="o"&gt;))&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;        for &lt;/span&gt;item in &lt;span class="k"&gt;$(&lt;/span&gt;changes &lt;span class="nv"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;total - expence&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;            &lt;/span&gt;&lt;span class="nb"&gt;eval &lt;/span&gt;&lt;span class="nv"&gt;coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;item&lt;/span&gt;&lt;span class="p"&gt;/=/;num=&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
            &lt;span class="nv"&gt;var&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;payment_&lt;span class="nv"&gt;$coin&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;${!var}&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;                &lt;/span&gt;&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;(($var -= num))&amp;quot;&lt;/span&gt;
                &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="p"&gt;!var&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt; &amp;lt;&lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="o"&gt;))&lt;/span&gt; &amp;amp;&amp;amp; &lt;span class="nb"&gt;unset&lt;/span&gt; &lt;span class="nv"&gt;$var&lt;/span&gt;
            &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;        done&lt;/span&gt;
&lt;span class="k"&gt;    fi&lt;/span&gt;

&lt;span class="k"&gt;    for &lt;/span&gt;var in &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="p"&gt;!payment_*&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;${var#payment_}=${!var} &amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

pay &lt;span class="m"&gt;147&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;1=2 10=4 100=3&amp;#39;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7947/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7947/</guid></item><item><title>emasaka's comment on '('と')'の対応
</title><link>http://ja.doukaku.org/comment/7922/</link><description>



&lt;a href="http://ja.doukaku.org/214/"&gt;&amp;#39;(&amp;#39;と&amp;#39;)&amp;#39;の対応&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/214/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/214/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;pre class='compact'&gt;お題のサンプルにあわせて、引数で'('と')'を与えています。

$ ./kakko.sh '(' ')' '(())'
True
$ ./kakko.sh '(' ')' '(()'
False

&lt;/pre&gt;
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6
7&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s"&gt;`echo &amp;quot;$3&amp;quot; | tr -d &amp;quot;[^$1]&amp;quot; | wc -c`&lt;/span&gt; \
   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;`echo &amp;quot;$3&amp;quot; | tr -d &amp;quot;[^$2]&amp;quot; | wc -c`&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo &lt;/span&gt;True
&lt;span class="k"&gt;else&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo &lt;/span&gt;False
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7922/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7922/</guid></item><item><title>emasaka's comment on 世界時計
</title><link>http://ja.doukaku.org/comment/7892/</link><description>



&lt;a href="http://ja.doukaku.org/213/"&gt;世界時計&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/213/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/213/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;訂正。×：LANG　○：TZ でした。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="nv"&gt;FMT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;時刻は%Y年%m月%d日 %k時%M分%S秒です。&amp;#39;&lt;/span&gt;
date &lt;span class="s2"&gt;&amp;quot;+現在の$FMT&amp;quot;&lt;/span&gt;
date -u &lt;span class="s2"&gt;&amp;quot;+グリニッジ標準$FMT&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;TZ&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;America/Los_Angeles date &lt;span class="s2"&gt;&amp;quot;+アメリカ・ロサンゼルスの$FMT&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7892/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7892/</guid></item><item><title>emasaka's comment on 世界時計
</title><link>http://ja.doukaku.org/comment/7887/</link><description>



&lt;a href="http://ja.doukaku.org/213/"&gt;世界時計&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/213/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/213/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;Linux、FreeBSD、Macで動作確認。&lt;/p&gt;
&lt;p&gt;ロケールとかdateの違いとかややこしい ＞＜&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="nv"&gt;FMT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;時刻は%Y年%m月%d日 %k時%M分%S秒です。&amp;#39;&lt;/span&gt;
date &lt;span class="s2"&gt;&amp;quot;+現在の$FMT&amp;quot;&lt;/span&gt;
date -u &lt;span class="s2"&gt;&amp;quot;+グリニッジ標準$FMT&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;LANG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;America/Los_Angeles date &lt;span class="s2"&gt;&amp;quot;+アメリカ・ロサンゼルスの$FMT&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7887/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7887/</guid></item><item><title>emasaka's comment on 漢数字で九九の表
</title><link>http://ja.doukaku.org/comment/7851/</link><description>



&lt;a href="http://ja.doukaku.org/212/"&gt;漢数字で九九の表&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/212/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/212/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;やりはじめてから、位置パラメータを指定できない罠に気づきました。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nv"&gt;digit&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;○ 一 二 三 四 五 六 七 八 九&lt;span class="o"&gt;)&lt;/span&gt;

漢数字出力&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$*&lt;/span&gt;
    &lt;span class="nb"&gt;local&lt;/span&gt; -i i
    &lt;span class="o"&gt;((&lt;/span&gt;n &amp;lt; &lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;digit&lt;/span&gt;&lt;span class="p"&gt;[@]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt; &amp;amp;&amp;amp; &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s1"&gt;&amp;#39;　&amp;#39;&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;;i &amp;lt; &lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;; i++&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;digit&lt;/span&gt;&lt;span class="p"&gt;[${n:$i:$#&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="o"&gt;]}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

九九一段&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local&lt;/span&gt; -i &lt;span class="nv"&gt;m&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$*&lt;/span&gt;
    &lt;span class="nb"&gt;local&lt;/span&gt; -i n
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;;++n &amp;lt; &lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;digit&lt;/span&gt;&lt;span class="p"&gt;[@]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;;&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        漢数字出力 &lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;m * n&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s1"&gt;&amp;#39; &amp;#39;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

九九&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local&lt;/span&gt; -i m
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;;++m &amp;lt; &lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;digit&lt;/span&gt;&lt;span class="p"&gt;[@]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;;&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        九九一段 &lt;span class="nv"&gt;$m&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

九九
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7851/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7851/</guid></item><item><title>？せんたくいた's comment on π
</title><link>http://ja.doukaku.org/comment/7778/</link><description>



&lt;a href="http://ja.doukaku.org/210/"&gt;π&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/210/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/210/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;pre class='compact'&gt;前半は半径rの1/4円の面積aを求めています。
後半では面積aを単純に4倍し、r*rで割ってpiを求めたかったのですが、
bashでは小数を持てないので、小数部分を10倍しながら表示しています。

$ ./pi.sh 100
3.1416
$ ./pi.sh 241
3.1400974
$ ./pi.sh 1000
3.141548
&lt;/pre&gt;
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#/bin/bash&lt;/span&gt;

&lt;span class="nv"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;$1&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1;x&amp;lt;&lt;span class="o"&gt;=&lt;/span&gt;r;x++&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0;y&amp;lt;r;y++&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;x*x+y*y&amp;lt;&lt;span class="o"&gt;=&lt;/span&gt;r*r&lt;span class="o"&gt;))&lt;/span&gt;;then
            &lt;span class="nv"&gt;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;a+1&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;else &lt;/span&gt;&lt;span class="nb"&gt;break&lt;/span&gt;
&lt;span class="nb"&gt;        &lt;/span&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="nv"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;a*4&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;;m&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;z/&lt;span class="o"&gt;(&lt;/span&gt;r*r&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="nv"&gt;$m&lt;/span&gt;
&lt;span class="nv"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;z-m*r*r&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;z&lt;span class="o"&gt;))&lt;/span&gt;;then
    &lt;span class="nb"&gt;echo&lt;/span&gt; -n .
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1;i&amp;lt;8&amp;amp;&amp;amp;z&amp;gt;0;i++&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;z*10/&lt;span class="o"&gt;(&lt;/span&gt;r*r&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
    &lt;span class="nv"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;z*10-n*r*r&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="nv"&gt;$n&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7778/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7778/</guid></item><item><title>emasaka's comment on 数値リストの圧縮
</title><link>http://ja.doukaku.org/comment/7738/</link><description>



&lt;a href="http://ja.doukaku.org/208/"&gt;数値リストの圧縮&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/208/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/208/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;pre class='compact'&gt;$ compact_number_list 1 3 4 5 6 12 13 15 20 25 26 27
[ 1 [ 3 6 ] 12 13 [ 15 25 5 ] 26 27 ]
&lt;/pre&gt;
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;function &lt;/span&gt;compact_number_list&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s1"&gt;&amp;#39;[ &amp;#39;&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;$# &lt;/span&gt;&amp;gt; 0&lt;span class="o"&gt;))&lt;/span&gt;;do
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;$# &lt;/span&gt;&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt; 3&lt;span class="o"&gt;))&lt;/span&gt; &amp;amp;&amp;amp; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt; - &lt;span class="nv"&gt;$1&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nv"&gt;$3&lt;/span&gt; - &lt;span class="nv"&gt;$2&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;;then
            &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt; - &lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
            &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;[ $1 &amp;quot;&lt;/span&gt;
            &lt;span class="nb"&gt;shift &lt;/span&gt;2
            &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;$# &lt;/span&gt;&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt; 2&lt;span class="o"&gt;))&lt;/span&gt; &amp;amp;&amp;amp; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt; - &lt;span class="nv"&gt;$1&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; d&lt;span class="o"&gt;))&lt;/span&gt;;do
                &lt;span class="nb"&gt;shift&lt;/span&gt;
&lt;span class="nb"&gt;            &lt;/span&gt;&lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="k"&gt;            &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;$1 &amp;quot;&lt;/span&gt;
            &lt;span class="o"&gt;((&lt;/span&gt;d !&lt;span class="o"&gt;=&lt;/span&gt; 1&lt;span class="o"&gt;))&lt;/span&gt; &amp;amp;&amp;amp; &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;$d &amp;quot;&lt;/span&gt;
            &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s1"&gt;&amp;#39;] &amp;#39;&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;
&lt;span class="k"&gt;            &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;$1 &amp;quot;&lt;/span&gt;
        &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;shift&lt;/span&gt;
&lt;span class="nb"&gt;    &lt;/span&gt;&lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;]&amp;#39;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7738/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7738/</guid></item><item><title>emasaka's comment on タブ区切りデータの処理
</title><link>http://ja.doukaku.org/comment/7726/</link><description>



&lt;a href="http://ja.doukaku.org/209/"&gt;タブ区切りデータの処理&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/209/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/209/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;sortを使いawkを使わない解。bashとdashで動作確認。&lt;/p&gt;
&lt;p&gt;1、3、4、5行目にはタブ文字が含まれています。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;IFS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;    &amp;#39;&lt;/span&gt;
&lt;span class="nb"&gt;read&lt;/span&gt; -r id forename surname age
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$id    $surname    $forename    $age&amp;quot;&lt;/span&gt;
sort -n -t &lt;span class="s1"&gt;&amp;#39;    &amp;#39;&lt;/span&gt; | &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nb"&gt;read&lt;/span&gt; -r id forename surname age;do
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$id    $surname    $forename    $((age + 1))&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/bash/"&gt;
      Bash
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7726/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7726/</guid></item></channel></rss>