私のechoコマンドはスイッチ(echo -nまたはecho -e)を受け入れません。

私のechoコマンドはスイッチ(echo -nまたはecho -e)を受け入れません。

私のスクリプトには、次のechoステートメントがあります。

echo -ne "Check Script";

印刷されると予想されます

Check Script

ただし、次のような結果が表示されます。

-ne Check Script

ただし、別のコンピュータで同じスクリプトを実行すると、期待した結果が表示されます。スクリプトが異なる動作をするコンピュータ固有の変数またはプロパティがある可能性があります。

答え1

これはPOSIXとUNIXの一貫した動作ですecho。 UNIXの一貫性のために、次のようにecho書くことができます。

echo 'Check Script\c'

最高いいえechoを使用し、代わりにprintfを使用してください。これは移植性の問題が少ない。

printf %s 'Check Script'

POSIXではこれを-n拡張として受け入れます(ただし、指定されていない動作を含む)。echo -e出力を意味するので、-e\nこのコンテキストでは POSIXbashzsh互換性がありません。

関連情報