記事投稿日: 2025年1月7日(火)
最終更新日: 2025年1月7日(火)
Bashのechoコマンドで-nをオプションとして解釈せずに文字列としてそのまま出力する方法を試したので紹介します。
下記のようにコマンドを実行すると-nはオプションとして解釈されて、 結果としては何も出力されません。
$ echo "-n"
# 何も出力されない
Bashでは--をつけると「これ以降はオプションではない」ことを意味するらしいですが、 どうやらechoではこれは使えないようです。
$ echo -- "-n"
-- -n
たとえば-nの前に半角スペースを入れて" -n"とすると文字列として解釈されます。
$ echo " -n"
-n
しかしこれだと当然のことながら半角スペースも一緒に出力されてしまうので、 同じ要領で\0-nにするとよさそうです。 \0はNULLのエスケープ文字です。 また、エスケープ文字を解釈するために-eをつけます。
$ echo -e "\0-n"
-n
注意点として実行環境によっては\0の挙動が変わるかもしれません。
以上です。
各シリーズの記事を下記にまとめてあります。