首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shell输出bash下的多行文本?

shell输出bash下的多行文本?
EN

Stack Overflow用户
提问于 2016-12-06 03:40:55
回答 1查看 71关注 0票数 1

下面是我的玩具程序

代码语言:javascript
复制
xxxx@xxxx-Dell:~/Desktop$ foo=$'line1\nline2'
xxxx@xxxx-Dell:~/Desktop$ echo $foo
line1 line2
xxxx@jxxxx-Dell:~/Desktop$ echo "$foo"
line1
line2

我知道shell命令语言中的引用机制。我的期望是两个echo命令会输出相同的东西,因为美元符号在明文和双调中都是元chracter。那为什么不一样呢。是什么套话吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-06 03:53:23

引用的版本和未引用的版本之间的区别可能取决于您的shell,但最有可能的是:

  • 引用后,"$foo"表示传递给echo命令的单个参数,该命令逐字打印它,后面跟着换行符。
  • 未引用的$foo扩展为由$IFS分隔的一组参数。如果$IFS未设置,则默认为空格,如果没有字段分隔符,则只有一个字段。

在未引用的版本中,没有理由期望换行符将被视为输出的一部分,因为它甚至不是echo命令的输入的一部分。它只是把论点分开。

如果要更改此行为,可以更改$IFS设置,但我不建议这样做。在需要处理字段时更改IFS,而不是格式化输出。

对于可预测的输出,请遵循POSIX.1建议,完全不要使用echo。使用printf代替。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40987439

复制
相关文章

相似问题

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