在 Bash 中,我将一行中的字段读入数组中。让我强调一下,性能是一个问题,所以我无法承受任何产生子进程的东西。
为了使代码更具可读性,我希望将字段放入变量中:$width
比${array[0]}
.我必须手动设置每个变量,如下所示,这是很多重复:
while read line; do
array=($line)
width=${array[0]}
height=${array[1]}
size=${array[2]}
date=${array[3]}
time=${array[4]}
# use $width, $height, etc. in script
done < file
list
有没有像PHP 中的指令那样紧凑的方法来做到这一点?
list($width, $height, $size, $date, $time) = $array;
答案1
是的:
while read -r width height size thedate thetime; do
# use variables here
done <file
这将从标准输入中读取数据并将数据拆分为空白(空格或制表符)。最后一个变量将获取“剩余”的任何数据(如果字段多于读取的变量)。这是代替读入变量line
。
我使用了变量名称thedate
和 ,thetime
而不是date
实用time
程序的名称。
分割线仅选项卡,设置IFS
为 的选项卡read
:
IFS=$'\t' read -r width ...etc...
也可以看看: