【发布时间】:2019-02-28 19:57:52
【问题描述】:
阅读this SO post 后,建议使用“c 样式字符串”(例如,${COMMAND//[$'\t\ r\n']}),为什么不使用echo呢?换句话说:
foo=$'Apple\nBanana\nCherry\n'
echo $foo
Apple Banana Cherry
或
foo=$(ls -1)
echo $foo
Jenkinsfile README.md exclude_contents install_kit.sh packaging
这会导致意外的副作用或其他问题吗?如果要求是去掉换行符,似乎比${foo//[$'\n']}简单
注意:我知道echo "$foo" 保留换行符,如果foo 包含\r\n,那么echo "$foo" 不会在一行中显示所有内容。
【问题讨论】:
-
echo没有 standard behavior 在处理换行时可以依赖。 shell方法更确定。 -
查看the POSIX specification for
echo的应用程序用法和基本原理部分,了解其行为是多么不可靠/不可移植。甚至echo自己的规范文档也建议改用printf。 -
BashPitfalls #14 也是相关的。
-
像
tr '\n' ' ' <<< "$foo"这样的操作只会稍微长一点,而且没有讨厌的副作用。