gpt4 book ai didi

bash - 手动迭代文件的一行 |狂欢

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

我可以用任何其他语言来做到这一点,但是对于 Bash,我四处寻找,却找不到答案。

我需要在脚本中手动增加 $line。示例:

for line in `cat file`
do
foo()
foo_loop(condition)
{
do_something_to_line($line)
}
done

如果您注意到,每次 foo_loop 迭代时,$line 都保持不变。我需要在那里迭代 $line,并确保原始的 for 循环只运行文件中的行数。

我考虑过使用不同的循环查找文件中的行数,并在 foo() 的内部循环中迭代行变量。

有什么想法吗?

编辑:

抱歉这么含糊。

开始吧:

我试图让我的一段代码执行多次(并行执行)

Function foo() # Does something
for line in `cat $temp_file`;
foo($line)

这段代码工作得很好,因为 foo 只是接受了 line 的值; 但是如果我想这样做:

Function foo() # Does something
for line in `cat $temp_file`;
while (some condition)
foo($line)
end

$line 将在整个 while 循环中等于相同的值。我需要用 while 循环改变它,然后在它返回到 for 时继续。示例:

line = Hi
foo{ echo "$line" };
for line in `cat file`;
while ( number_of_processes_running -lt max_number_allowed)
foo($line)
end

如果文件的内容是

Hi \n Bye \n Yellow \n Green \n

示例程序的输出将是(如果允许的最大数量为 3)

Hi Hi Hi Bye Bye Bye Yellow Yellow Yellow Green Green Green.

我想要的地方

Hi Bye Yellow Green 

我希望这会更好。我正在尽力解释我的问题。

最佳答案

与其使用 for 循环来读取文件,不如像这样读取文件。

#!bin/bash

while read line
do
do_something_to_line($line)
done < "your.file"

关于bash - 手动迭代文件的一行 |狂欢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1456501/

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