如果以下示例将IFS
环境变量设置为换行符...
IFS=$'\n'
Run Code Online (Sandbox Code Playgroud)
我知道IFS
环境变量是什么,\n
字符是什么(换行),但为什么不使用以下形式:(
IFS="\n"
哪个不起作用)?
例如,如果我想循环遍历文件的每一行并想要使用for循环,我可以这样做:
for line in (< /path/to/file); do
echo "Line: $line"
done
Run Code Online (Sandbox Code Playgroud)
但是,除非IFS
设置为换行符,否则这将无法正常工作.为了让它工作,我必须这样做:
OLDIFS=$IFS
IFS=$'\n'
for line in (< /path/to/file); do
echo "Line: $line"
done
IFS=$OLDIFS
Run Code Online (Sandbox Code Playgroud)
注意:我不需要另一种方式做同样的事情,我已经知道很多其他的...我只是对此感到好奇,$'\n'
并想知道是否有人可以给我一个解释.
我很好奇为什么在设置IFS以分割这样的换行符时需要退格:
IFS=$(echo -en "\n\b")
Run Code Online (Sandbox Code Playgroud)
为什么我不能只使用它(这不起作用)呢?
IFS=$(echo -en "\n")
Run Code Online (Sandbox Code Playgroud)
我正在使用Unix行结尾保存文件的Linux系统上.我已经使用换行符将我的文件转换为十六进制,它肯定只使用"0a"作为换行符.
我已经google了很多,虽然许多页面都记录了换行符后面的换行符,但我找不到解释为什么需要退格键.
-大卫.