相关疑难解决方法(0)

IFS = $'\n'的确切含义是什么?

如果以下示例将IFS环境变量设置为换行符...

IFS=$'\n'
Run Code Online (Sandbox Code Playgroud)
  • 什么是美元符号的意思 完全相同
  • 在这个具体案例中它做了什么?
  • 我在哪里可以阅读有关此特定用法的更多信息(Google不允许在搜索中使用特殊字符,否则我不知道该寻找什么)?

我知道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'并想知道是否有人可以给我一个解释.

variables bash shell environment-variables ifs

117
推荐指数
4
解决办法
8万
查看次数

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

我很好奇为什么在设置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了很多,虽然许多页面都记录了换行符后面的换行符,但我找不到解释为什么需要退格键.

-大卫.

linux bash

59
推荐指数
4
解决办法
7万
查看次数

标签 统计

bash ×2

environment-variables ×1

ifs ×1

linux ×1

shell ×1

variables ×1