当设置IFS拆分换行符时,为什么需要包含退格?
我很好奇,为什么当设置IFS拆分换行符时需要退格:
IFS=$(echo -en "\n\b")
为什么我不能只用这个(这是行不通的)呢?
IFS=$(echo -en "\n")
我在一个Linux系统上保存Unix行结尾的文件。 我用新行将我的文件转换为hex,它绝对只使用“0a”作为换行符。
我GOOGLE了很多,虽然很多网页文档的新行,其次是退格解决scheme,没有我find解释为什么退格是必需的。
-大卫。
因为bash手册对于命令replace说:
Bash通过执行命令执行扩展,并用命令的标准输出replace命令replace,删除任何尾随的换行符。
因此,通过添加\b
您可以防止删除\n
。
一个更干净的方法来做到这一点可以使用$''
引用,如下所示:
IFS=$'\n'
我只记得最简单的方法。 用debian wheezytestingbash。
IFS=" "
别开玩笑:)
这是因为使用了echo
和命令replace。
prompt> x=$(echo -en "\n") prompt> echo ${#x} 0 prompt> x=$(echo -en "\n\b") prompt> echo ${#x} 2
$()
带换行符和\b
防止\n
成为尾随的换行符,而不太可能出现在任何文本中。 IFS=$'\n'
是设置IFS在换行符上分割的更好方法。
只要按下input,不分配任何东西也可以。 虽然,看起来有人犯了一个错误,很难理解。
IFS= #This is a line