異なる Linux サーバーで実行したいシェル スクリプトがあります。-e オプションを指定して echo コマンドを実行し、文字列にエスケープ文字を含めると、Ubuntu 12.04 または Ubuntu 11.04 の sh シェルで期待どおりに実行されません。スクリプトを動作させたい使用中の 2 台のサーバーは、CentOS 5.3 と Ubuntu 12.04 を実行しています。2 つのサーバーの bash で次のコマンドを実行すると、期待どおりの出力が生成されます。
$ echo -e "line1\nline2"
line1
line2
CentOS マシンの sh で同じコマンドを実行すると、正しい出力も生成されます。しかし、Ubuntu 12.04 または 11.04 で sh でコマンドを実行すると、次の出力が生成されます。
$ echo -e "line1\nline2"
-e line1
line2
興味深いことに、Ubuntu の sh で以下を実行すると、エスケープ文字が自動的に解釈されます。
$ echo "line1\nline2"
line1
line2
スクリプトは sh シェルで実行する必要があり、異なるマシン間で移植できる必要があります。任意のソリューション。また、このようなことが起こる理由や方法を説明しているドキュメントへのリンクをいただければ幸いです。