-e
Bash 4で変数に割り当てようとしています。しかし、変数はまだ空です。
たとえば、
$ var="-e"
$ echo $var
$ var='-e'
$ echo $var
$ var="-t"
$ echo $var
-t
なぜ動作します-t
が、動作しませんか-e
?
答え1
動作しますが、echo -e
両方のオプションを有効にしないと、Bashで実行すると何も出力されません。これはオプションとして解釈されます。posix
xpg_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 var
(typeset -p var
ksh、zsh、yash(bashを含む))を使用して、変数の正確な型と内容を知ることができます。
答え2
コマンド(たとえば、あなたの場合echo
)はコマンドライン引数を使用し、これはフラグ(-e
あなたの場合)です。多くのコマンド(少なくとも一般的なLinuxバージョン)は--
(2つのハイフン)を「フラグの終わりであり、次の内容は一般的なパラメータ」として理解しています。したがって、異常に名前の付いた-r
ファイルを削除できますrm -- -r
。
コンテンツを表示するのがより強力です(使いにくい場合)printf
。