逐行读取变量,而无需吞噬 \ 字符



我正在使用此代码片段逐行读取变量:

echo "${lines}" | while read line; do something with ${line}; done

lines包含新行和字符的出现(line将被解释为C字符串)。不幸的是,在此代码中的某个地方,字符被简单地剥离了。为什么,我该如何解决这个问题?

编辑: 示例输入如下:

foo $'bar'
fee $'berfbir'

请注意,仅剥离,而不剥离稍后将用于将字符串解释为C字符串的$''

您可以转义字符,以便它们仍然存在于您的read line中,如下所示:

echo "${lines}" | sed 's/\/\\/g' | while read line; do something with ${line}; done

更新:经过一些测试,我刚刚更新了上面的 sed 行,现在就试试吧,它对我有用。

更新2:由于jordanm似乎删除了他的答案,该答案使用了比我更好的方法,我将自己在此处添加:

使用read命令的-r参数,它会指示它不要转义斜杠,因此这也有效:

echo "${lines}" | while read -r line; do something with ${line}; done

相关内容

  • 没有找到相关文章

最新更新