如何读取命令lspci的结果每行作为数组的元素?

时间:2015-11-04 19:27:27

标签: linux bash shell

我想从目标系统获取视频卡信息,无论它是什么。从我当前的目标系统返回两行,我想将每一行视为数组元素。 使用下面的代码,我得到了lspci结果中的每一个字,而不是整行,这是我需要的。有什么想法吗?

myvideos=(`lspci | grep VGA`)
for video in ${myvideos[@]}
do
   echo "The $video"
done

代码返回的结果是:

The 00:02.0
The VGA
The compatible
The controller:
The Intel
The Corporation ....

我需要的是:

00:02.0 VGA compatible controller: Intel Corporation

谢谢!

2 个答案:

答案 0 :(得分:3)

  1. 使用mapfile将输出捕获到数组中。

    mapfile -t myvideos < <(lspci | grep VGA)
    
  2. 对于for循环中的use quotes on the array绝对至关重要

    for video in "${myvideos[@]}"; do ...
    

答案 1 :(得分:0)

在不使用数组的情况下,还有其他方法可以做到这一点:

lspci | grep VGA |  xargs -i echo The {}

lspci | grep VGA | awk '{print "The " $0}'