一次循环文件 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")
我试图同时遍历文件 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")