首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash、双引号和"reboot“命令

Bash、双引号和"reboot“命令
EN

Stack Overflow用户
提问于 2018-04-27 12:08:48
回答 2查看 172关注 0票数 2

假设bash脚本中有这两条语句:

代码语言:javascript
复制
# No. 1
MSG="Automatic reboot now."
echo $MSG

# No. 2
MSG=""Automatic reboot now.""
echo $MSG

语句1的输出与预期的一样(只需打印)。如果bash运行语句2,则重新启动机器(将执行任何有效的bash命令)。

但是为什么呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-27 12:42:51

一个不太为人所知的shell特性是能够在单个命令的持续时间内设置环境变量。这是通过在命令前面加上一个或多个赋值来完成的,如:var1=foo var2=bar command

这里有个示范。注意如何保存$MSG的原始值。

代码语言:javascript
复制
$ export MSG=Hello
$ bash -c 'echo $MSG'
Hello
$ MSG=Goodbye bash -c 'echo $MSG'
Goodbye
$ bash -c 'echo $MSG'
Hello

现在谈谈你的问题:

代码语言:javascript
复制
MSG=""Automatic reboot now.""

这对双引号使对方无效,不如不在那里。相当于:

代码语言:javascript
复制
MSG=Automatic reboot now.

它使用reboot的参数now.$MSG环境变量设置为Automatic来执行Automatic

票数 3
EN

Stack Overflow用户

发布于 2018-04-27 12:12:51

这是因为MSG=""Automatic reboot now.""的含义如下:

使用env执行reboot now.。var。MSG设置为Automatic

相当于:

代码语言:javascript
复制
MSG=Automatic reboot now.
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50062071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档