> xtempfile.tmp; done 它工作正常-6ren">
gpt4 book ai didi

linux - 我们什么时候应该在脚本中将 IFS 变量改回其原始值?

转载 作者:IT王子 更新时间:2023-10-29 01:09:38 25 4
gpt4 key购买 nike

假设我通过一个 cronjob 执行这个脚本:

IFS=$'\n'

for i in `cat "$1"`; do
echo "$i" >> xtempfile.tmp;
done

它工作正常,没有引起任何问题。但是当我在终端中运行它时,我必须将 IFS 变量设置回其原始值

IFS=$OLDIFS

一般在什么情况下我们必须将 IFS 设置回其原始值?

最佳答案

代替:

IFS=$'\n'

for i in `cat "$1"`; do
echo "$i" >> xtempfile.tmp;
done

你可以这样做:

while IFS=$'\n' read -r line; do
echo "$line"
done < "$1" >> xtempfile.tmp

这会在 while 循环 期间设置 IFS 变量。

*根据 samveen 的评论添加。任何时候在子 shell 中对 IFS 进行更改,更改都会自动恢复。但是,当您在交互式 shell 中进行修改时,情况并非如此。上述建议是为确保我们不会意外修改整个 shell 的 IFS 所必需的处理。 *

关于linux - 我们什么时候应该在脚本中将 IFS 变量改回其原始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17182528/

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