所以你知道这个吗?: Read a file line by line assigning the value to a variable
如何在没有循环的情况下执行此操作,我会遇到循环会出现错误和混乱的情况。(如果您曾经尝试过乱用并行)但我仍然需要读取文件逐行。
有没有循环的方法呢? xargs
? awk
? parallel
?
答案 0 :(得分:2)
使用readarray
将整个文件读入数组变量。每一行都是一个数组元素。
readarray -t arrayname < filename
答案 1 :(得分:1)
这个问题对我来说真的没什么意义,但你当然可以做到:
{
read line_one <&3; # Read from the input file
echo "The first line is $line_one"
read line_two -u 3; # A different method to read
echo "The second line in $line_two"
...
} 3< input file
请注意,从fd 3读取并不是必需的,但如果您的命令不是从与读取相同的输入读取,那么它会更安全。
但是,如果你真的&#34;在这种情况下,循环会出现错误和混乱的情况。那么你有一个问题,这不是解决方案。
答案 2 :(得分:0)
FWIW,使用递归函数(好吧,递归可能是循环...)。首先是一些测试材料:
₹
然后是函数$ seq 1 4 > file
:
fun
呼吁$ fun() {
if read -r line <&5 # read from defined FD 5
then
echo process $line # process the lines here
fun # recursive function call
fi
}
:
fun
答案 3 :(得分:0)
有点不清楚你在问什么。也许你只是要求:
myvar="$(cat thefile)"