请教 bash 替换字符问题

2019-12-01 09:08:02 +08:00
 NonClockworkChen
输入:foo="Mike is ";bar=${foo/ /|};echo $bar
输出:Mike|is
上面是想要的效果。
如果把 Mike is 保存在 voc4.txt 文件里。(一行保存一个单词)
输入:foo="$(< voc4.txt)";bar=${foo/ /|};echo $bar
输出:Mike is
就没替换了,为什么?不知道哪里细节错了。请教大佬。
1711 次点击
所在节点    问与答
4 条回复
df4VW
2019-12-01 09:17:42 +08:00
你这不是逗我么兄弟

一行一个单词,那你哪里来的空格
uyhyygyug1234
2019-12-01 11:26:02 +08:00
a@master:~# cat voc4.txt
Mike is
a@master:~# foo="$(< voc4.txt)";bar=${foo/ /|};echo $bar
Mike|is


我这可以啊
NonClockworkChen
2019-12-01 12:27:08 +08:00
@uyhyygyug1234 你不是一行一个单词,是一行两个单词吧。
用 bash 的 pattern matching,我感觉是没法处理多行的,我现在用了 tr 命令来解决。
zbinlin
2019-12-01 13:10:58 +08:00
bar=${foo/$'\n'/|}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/624720

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX