请教 bash 替换字符问题

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

一行一个单词,那你哪里来的空格
uyhyygyug1234
2019 年 12 月 1 日
a@master:~# cat voc4.txt
Mike is
a@master:~# foo="$(< voc4.txt)";bar=${foo/ /|};echo $bar
Mike|is


我这可以啊
NonClockworkChen
2019 年 12 月 1 日
@uyhyygyug1234 你不是一行一个单词,是一行两个单词吧。
用 bash 的 pattern matching,我感觉是没法处理多行的,我现在用了 tr 命令来解决。
zbinlin
2019 年 12 月 1 日
bar=${foo/$'\n'/|}

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

https://study.congcong.us/t/624720

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

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

© 2021 V2EX