少しハマったシェルスクリプト
TA中に妙なところで「思った通りに動かない」ということがあったので追っかけてみました。
その場に一緒に居た某kono研の人とか某B3が見てるだろうと信じて。
echo -n
シェルスクリプト書いてるとログ出力時とかによく使う
echo -n
なんですが、Macではどうやら正しく動作しない模様。
コマンドライン上では正しく動くけど、スクリプト内だとダメでした。
[bash]
$ vi test.sh
#!/bin/sh
echo -n test
$ sh test.sh
-n test
$
[/bash]
みたいになります。
対応策:/bin/echo を使いましょう。
対応策からも予想がつくかもしれませんが、built-inが…。
[bash]
$ where echo
echo: shell built-in command
/bin/echo
[/bash]
ぐぐってみると同じ感じの記事がありました。
find
あともう一つ、
[bash]
# 正しい挙動
$ find . -name "*.txt" -print0
# 間違った挙動
$ find . -print0 -name "*.txt"
[/bash]
上の二つはそれぞれ出力が変わります。
-print0
についてman読むと「0を返す」みたいなことが書かれてたので、-print0の時点で終了するのかな、とか。
実際、以下と結果は同じになります。
[bash]
find . -print0
[/bash]
こういうのってどうやって確かめたらいいんですかね。
traceして見てみましたけど、多分あってるんじゃないかな〜、ぐらいです。
sshとかでも微妙にハマったところあったりで、繰り返しやってることでも割と躓くことは多いな〜、と。
ちなみにこれは$HOMEの権限が775だったことが原因でした。
というわけでTAは今日で終わりでした〜。
夏休みだー、とか思ったら今日から後期だそうな。
進捗どうですか?
Answer: 進捗駄目です
はい。