Bash – 将变量的值传播到循环外部

前端之家收集整理的这篇文章主要介绍了Bash – 将变量的值传播到循环外部前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
dpkg --list |grep linux-image |grep "ii  " | while read line
do
  arr=(${line})
  let i=i+1
  _constr+="${arr[2]} "
done
echo $i
echo ${_constr}

循环外的echo语句不显示预期变量.
如何使变量的内容在循环之外传播?

问题是管道,而不是循环.尝试这样
let i=0
declare -a arr

while read -r line ; do
    arr=(${line})
    let i=i+1
    _constr+="${arr[2]} "
done < <(dpkg --list |grep linux-image |grep "ii  ")

echo $i
echo ${_constr}

为了清楚起见,您还应该预先声明全局变量,如上所示.

如Blagovest在评论中指出的那样,管子在一个子壳中执行.使用process substitution instead(这是<(命令)语法)将所有内容保持在相同的过程中,因此可以对全局变量进行更改. 顺便说一句,你的管道也可以改进

dpkg --list |grep '^ii.*linux-image'

一个少调用grep担心.

猜你在找的Bash相关文章