シェルワンライナー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はいつ実行されているのだろうか。どのタイミングで実行されてお望みの文字列になっているのかがいまいちよくわからなかった。ここで使われているかっこはサブシェルを表しているが、これと関係あるのかもしれない。