Ansatzの備忘録

勉強したことあるいはふと思い立ったこと

シェルワンライナー160本ノック問題155

問題155 不正なContent-Length

リード文をよく読まず誤答してしまった。なぜpythonでサーバを立てるのではなく、ncを使うのか最初はわからなかったが、多分レスポンスのヘッダー含めて自由に中身を書いて送りたいときはncを使うといいということなのだろう。pythonで立てたときはヘッダー部分は自由にかけなさそうな感じだった。

解答例は

( echo -e "HTTP/1.1 200 OK\nContent-Length: 4"; echo; printf test ) | nc -N -l 8080

となる。-eオプションをつけてエスケープを有効にしている。ところでこれらechoやprintfはいつ実行されているのだろうか。どのタイミングで実行されてお望みの文字列になっているのかがいまいちよくわからなかった。ここで使われているかっこはサブシェルを表しているが、これと関係あるのかもしれない。