前回の抜き出しシェルスクリプトだけど。
echo -e で出力しようとしたのがいけなかったようだ。
while ループの中でガシガシとリダイレクトすればイケそう。
と思って Fedora で試すとバッチリ狙いどおりに出力された。
mac にソースを持って行くと、あれ?
なんかおかしいけど原因が解らない、仕事中も含め半日悩む。
下記の実験コードでやっと理解。
#!/bin/sh while read -r line; do echo $line echo 0 done << __DOC__ aaa bbb ccc\nddd eee __DOC__
が
macOS の read は改行コードと文字列の \n を区別してくれない。
のではないな、echo で改行されてしまっているようだ。
echo “aa\nbb” だと普通に \n が出力されるのに、よくわからない。
# 追記
sh ではなく bash 指定なら Fedora 同様の出力になるようです。
zsh の場合 echo に -E オプションを付けないと同様な症状になる。
# 追記おしまい
後、前回は気が付かなかったけど macOS の echo には -e オプションが無い!
bash のバージョンが違うのは知っているけどまさかこんな所が違うとは。
同じ bash だから同じ挙動やオプションだと思ってはいけない教訓になった。
拡張の [[ とかは同様に使えるのにね。
てか、macOS って中身は本当に色々と古いんだよなぁ。