gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:38:38 29 4
gpt4 key购买 nike

如果在下面的示例中,将 IFS 环境变量设置为换行符...

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

我知道 IFS 环境变量是什么,\n 字符是什么(换行符),但为什么不直接使用以下形式:IFS="\n"(不起作用)?

例如,如果我想遍历文件的每一行并想使用 for 循环,我可以这样做:

for line in (< /path/to/file); do
echo "Line: $line"
done

但是,除非将 IFS 设置为换行符,否则这将无法正常工作。为了让它工作,我必须这样做:

OLDIFS=$IFS
IFS=$'\n'
for line in (< /path/to/file); do
echo "Line: $line"
done
IFS=$OLDIFS

注意:我不需要另一种方法来做同样的事情,我已经知道很多其他的了...我只是对那个 $'\n' 并想知道是否有人可以给我一个解释。

最佳答案

通常 bash 不解释字符串文字中的转义序列。因此,如果您编写 \n"\n"'\n',那不是换行符 - 它是字母 n (在第一种情况下)或反斜杠后跟字母 n(在其他两种情况下)。

$'somestring' 是一种带转义序列的字符串文字的语法。所以不像'\n'$'\n'实际上是一个换行符。

关于bash - IFS= $'\n' 的确切含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4128235/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com