在命令提示符($),我执行以下命令:
$ stupid="-a hello"
$ echo $stupid
回声产生:
-a hello
在命令提示符($),我执行以下命令:
$ stupid="-e hello"
$ echo $stupid
回声产生:
hello
“-e”为什么消失了?
答案 0 :(得分:7)
由于$stupid
未加引号,因此将其处理为echo
的标志并启用反斜杠转义的解释。
如果您这样做:
$ stupid="-e hello"
$ echo "$stupid"
您会看到$stupid
的值全部回显:
-e hello
因为变量扩展后的命令将是
echo "-e hello"
但是,在您的情况下,$stupid
首先被扩展,然后以以下方式执行命令:
echo -e hello
如果您的变量值实际上包含转义字符,例如foo="-e \ttext"
,同时尝试echo $foo
和echo "$foo"
并查看会发生什么,则可能会变得更加明显。
最重要的是:谨慎地将字符串和或双引号引起来。