一次循环文件 4 行并将这些行存储在 4 个变量中

loop through a file 4 rows at the time and store the lines in 4 variables

我试图同时遍历文件 4 行并将这些行存储在 4 个变量中

来源

8069347
41301052
394971301
39413010
8655766
91557668
754318656682
0279628

所需输出 存储前 4 行,5 秒后存储下 4 行

8069347
41301052
394971301
39413010

I tried this but it only stores the line in $a and nothing in $b,$c,$d

while read -r a b c d ; do
    echo "$a"
    echo "$b"
    echo "$c"
    echo "$d"
    sleep 5
done < Auto

知道如何解决这个问题吗? 我不反对 for-loop 选项

如果要读取4行,需要使用read命令4次:

while read -r a; read -r b; read -r c; read -r d ; do
    echo "$a"
    echo "$b"
    echo "$c"
    echo "$d"
    sleep 5
done < Auto

您也可以使用 bash 的 mapfile 一次填充一个数组 4 lines/element,而不是一堆 read

while mapfile -t -n 4 lines; do
    if [[ ${#lines[@]} -eq 0 ]]; then
        break
    fi
    printf "%s\n" "${lines[@]}"
    sleep 5
done < Auto

有 4 个 read 命令:

{ read -r a; read -r b; read -r c; read -r d ;} < file

使用 for 循环和数组:

for((i=0; i<4; i++)); do read -r array[$i]; done < file
declare -p array

输出:

declare -a array=([0]="8069347" [1]="41301052" [2]="394971301" [3]="39413010")