少しハマったシェルスクリプト

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: 進捗駄目です
はい。