一尘不染

将IFS设置为在换行符上分割时,为什么需要包含退格键?

linux

我很好奇为什么在将IFS设置为在换行符上分割时为什么需要退格键:

IFS=$(echo -en "\n\b")

为什么我不能只使用它(不起作用)呢?

IFS=$(echo -en "\n")

我在使用Unix行尾保存文件的Linux系统上。我已经用换行符将文件转换为十六进制,并且肯定只使用“ 0a”作为换行符。

我已经在Google上搜索了很多,尽管有很多页面记录了换行符以及后退解决方案,但是我发现却没有一个解释为什么需要退格。

-大卫。


阅读 409

收藏
2020-06-07

共1个答案

一尘不染

因为如bash手册所述,关于命令替换

Bash通过执行命令并将命令替换替换为命令的标准输出来执行扩展,并删除所有尾随的换行符。

因此,通过添加\b您可以防止删除\n

一种更干净的方法是使用$''引用,如下所示:

IFS=$'\n'
2020-06-07