echoを使って「-e」を印刷するには?

echoを使って「-e」を印刷するには?

私はこれがecho -e一般的な命令ではないことを知っています。echo '-e'私はこれを試しましたが、echo \-eまだ動作しません。

ベストアンサー1

最善の解決策はそれを使用するのではなくecho使用することですprintf

printf '%s\n' -e

これは任意の変数に対して機能します。

var=-e
printf '%s\n' "$var"

echo...これは、値がdという知識に基づいてコードの他の場所で特別な準備/修正を実行する必要がないことを意味します。


さて、POSIX シェルコマンド仕様echo実装時に移植が不可能であることを認識し、トピックに関する注意事項を含めてください。

-n(最初の引数)とエスケープシーケンスを省略しない限り、すべてのPOSIXシステムでechoを移植的に使用することはできません。

printfユーティリティは、次のようにechoユーティリティの一般的な動作をエミュレートするために使用できます(IFSに標準値があるか設定されていないと仮定)。

POSIX.1-2008 このボリュームの歴史的な System V エコおよび XSI 実装の要件は、次のとおりです。

printf "%b\n" "$*"

BSDエコーは次のとおりです。

if [ "X$1" = "X-n" ]
then
    shift
    printf "%s" "$*"
else
    printf "%s\n" "$*"
fi

新しいアプリケーションでは、echoの代わりにprintfを使用することをお勧めします。

(強調追加)。


言い換えれば、GNUシステムには、標準に準拠した動作を要求する別のオプションがあります。

$ POSIXLY_CORRECT=1 /bin/echo -e
-e

おすすめ記事