2014-12-15

日記

 午前は大学に行って、午後はアルバイトに行って、夜は早めに帰ってきて、早めに寝た。

雑記 [shell, linux, bash]

 シェルでそのままfor文を書いたことがなくてあれだったので。

$ for ((i=0;i<10;i++))
for> do
for> echo $i
for> done
0
1
2
...
もちろん、
$ for ((i=0;i<10;i++)); do; echo $i; done;
$ for ((i=0;i<10;i++)) do echo $i; done
$ for ((i=0;i<10;i++))do echo $i;done
でも同じ結果になる。forがコマンド名だからforと括弧の間は開けないとだめっぽい。

//a.outに0から10まで投げてhogeって文字列が出てきたらその数字を表示して入力待ちにする
$ for ((i=0;i<10;i++)) do if echo $i | ./a.out | grep hoge; then echo $i; read; fi; done;

ただこれだとhogeを含む文字列が表示されてしまうので、
正解の数字だけ表示してほしいときはgrep -qにする(--quiet)
$ for ((i=0;i<10;i++)) do if echo $i | ./a.out | grep -q hoge; then echo $i; read; fi; done;
a.outは正しい数字を受け取るとhogeを含む文字列を返す、というプログラムだとする。

逆に、間違った数字を受け取った時にerrorとか返してくれるプログラムなら、ifの否定で
$ for ((i=0;i<10;i++)) do if ! echo $i | ./a.out | grep -q error; then echo $i; read; fi; done;
とすれば、error以外の文字列を吐いてくれたときだけ正解の数字を出して止まってくれる。

数字だけじゃなくて文字も。
$ for i in {a..z} do echo $i; done

ちょっと調べた感じ、{}の表現:Brace expansionに関しては
Brace expansion [Bash Hackers Wiki]
がわかりやすく書いてた。
倫理学特殊講義のレポート:授業で取り上げた対話篇(ゴルギアスか饗宴かパイドロス)のどれかを読み、講義の内容と関連させて論じること。A4横書きで3200字程度。締め切りは1/30/15時、倫理学研究室に提出。

広告を非表示にする