
Ubuntu日本語フォーラム

ログインしていません。
echo コマンドをシェルスクリプトで実行させた場合の挙動について教えてください。
SUSE では
echo -e "aaaa\nbbbb"
を実行させると、結果として
aaaa
bbbb
となっていました。(\n はエスケープシーケンスを使った「改行」の記述)
ubunts でもシェル上で手動で実行させた場合は同様なんですが、シェルスクリプトに上記 echo コマンドを記述して実行させると
-e aaaa
bbbb
となってしまいます。
おかげで SUSE で作成しておいたシェルスクリプトの結果が違ってしまう(冒頭に余分に "-e" がつく)んですが、echo のような基本的?なコマンドの解釈さえディストリビューションによって変わってしまうものなのでしょうか?
それとも、これは不具合なのでしょうか?
なお ubunts の ver は 11.04 です。
PS
もし SUSE / ubunts 両方のシェルスクリプトで echo のエスケープシーケンスが正しく解釈される記述方法をご存知でしたら教えていただけますと幸いです。
オフライン
私もあまり詳しくはありませんが、
SUSEのコマンドプロセッサー、シェルスクリプトインタープリター(というかどうかわかりませんが、)Bashですが、UbuntuはシェルスクリプトインタープリターはDashです。
BashとDashの間には微妙な違いがあるのが当然です。
例:http://d.hatena.ne.jp/kakurasan/20091013/p1
そこで通常は、実行時のシェルスクリプトの先頭で、インタープリターを指定するのが一般的です。
オフライン
すばやいご回答ありがとうございました。
お蔭様で解決いたしました。
正確に質問しなくて申し訳ありませんでしたが、実際のシェルスクリプト冒頭には
#! /bin/sh
が記述してあります。
しかし ubunts では sh が dash というものににリンクしているのでダメだったというわけですね。
ご指摘を頂いて調べてみてわかりました。
なのでこれを
#! /bin/bash
と書き換えたらうまくいきました。
ありがとうございました。
以上
オフライン