将制表符分隔字段放入变量的紧凑方法

将制表符分隔字段放入变量的紧凑方法

在 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...

也可以看看:

相关内容