Ansatzの備忘録

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

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

問題14 さまざまなループ

羊を100匹、1秒ごとに数えて出力する方法を考える問題だった。

seq なりなんなりで100カウントしつつさて1秒待つという処理をどうしたものかと悩んでしまった。sleep で実現できるということに思い至らなかった。

正解例として

 n=1;while [ $n -le 100 ]; do echo "羊が${n}匹" ;  n=$((n+1)); sleep 1 ;done

などがある。while の直後のテストコマンドはちゃんと中身とスペースを空けないと正しく認識されない。

ほかにも for 文にコマンド置換を用いてやる別解などがあった。

シェルスクリプトをターミナルで編集したいがどうすればいいのか、やっぱりemacsとかの使い方を覚えるほかなさそう。それともecho を使って一行ずつ書いていくのでもよいかな。慣れないうちはそうしようと思う。シングルクォートを忘れると # が正しく処理されないことに気を付けなければ。