假设bash脚本中有这两条语句:
# No. 1
MSG="Automatic reboot now."
echo $MSG
# No. 2
MSG=""Automatic reboot now.""
echo $MSG语句1的输出与预期的一样(只需打印)。如果bash运行语句2,则重新启动机器(将执行任何有效的bash命令)。
但是为什么呢?
发布于 2018-04-27 12:42:51
一个不太为人所知的shell特性是能够在单个命令的持续时间内设置环境变量。这是通过在命令前面加上一个或多个赋值来完成的,如:var1=foo var2=bar command。
这里有个示范。注意如何保存$MSG的原始值。
$ export MSG=Hello
$ bash -c 'echo $MSG'
Hello
$ MSG=Goodbye bash -c 'echo $MSG'
Goodbye
$ bash -c 'echo $MSG'
Hello现在谈谈你的问题:
MSG=""Automatic reboot now.""这对双引号使对方无效,不如不在那里。相当于:
MSG=Automatic reboot now.它使用reboot的参数now.和$MSG环境变量设置为Automatic来执行Automatic。
发布于 2018-04-27 12:12:51
这是因为MSG=""Automatic reboot now.""的含义如下:
使用env执行
reboot now.。var。MSG设置为Automatic。
相当于:
MSG=Automatic reboot now.https://stackoverflow.com/questions/50062071
复制相似问题