お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2011-08-25 17:15:21

nabeka333
新しいメンバ
登録日: 2011-08-25

echo コマンドの挙動

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 のエスケープシーケンスが正しく解釈される記述方法をご存知でしたら教えていただけますと幸いです。

オフライン

 

#2 2011-08-25 17:36:20

funatogawa
メンバ
From: 関東
登録日: 2009-02-01

Re: echo コマンドの挙動

私もあまり詳しくはありませんが、
SUSEのコマンドプロセッサー、シェルスクリプトインタープリター(というかどうかわかりませんが、)Bashですが、UbuntuはシェルスクリプトインタープリターはDashです。
BashとDashの間には微妙な違いがあるのが当然です。
例:http://d.hatena.ne.jp/kakurasan/20091013/p1

そこで通常は、実行時のシェルスクリプトの先頭で、インタープリターを指定するのが一般的です。

オフライン

 

#3 2011-08-25 18:12:59

nabeka333
新しいメンバ
登録日: 2011-08-25

Re: echo コマンドの挙動

すばやいご回答ありがとうございました。
お蔭様で解決いたしました。

正確に質問しなくて申し訳ありませんでしたが、実際のシェルスクリプト冒頭には

#! /bin/sh

が記述してあります。
しかし ubunts では sh が dash というものににリンクしているのでダメだったというわけですね。
ご指摘を頂いて調べてみてわかりました。

なのでこれを

#! /bin/bash

と書き換えたらうまくいきました。

ありがとうございました。

以上

オフライン

 

Board footer

Powered by FluxBB