Bashで変数に "-e"を割り当てる方法

Bashで変数に

-eBash 4で変数に割り当てようとしています。しかし、変数はまだ空です。

たとえば、

$ var="-e" 
$ echo $var

$ var='-e' 
$ echo $var

$ var="-t" 
$ echo $var
-t

なぜ動作します-tが、動作しませんか-e

ベストアンサー1

動作しますが、echo -e両方のオプションを有効にしないと、Bashで実行すると何も出力されません。これはオプションとして解釈されます。posixxpg_echo-e

$ help echo
echo: echo [-neE] [arg ...]
    Write arguments to the standard output.

    Display the ARGs, separated by a single space character and followed by a
    newline, on the standard output.

    Options:
      -n        do not append a newline
      -e        enable interpretation of the following backslash escapes
      -E        explicitly suppress interpretation of backslash escapes

使用

printf "%s\n" "$var"

代わりに。

コメントで指摘したように、Bash declare -p vartypeset -p varksh、zsh、yash(bashを含む))を使用して、変数の正確な型と内容を知ることができます。

望むより:なぜprintfがechoより優れているのですか?

おすすめ記事