添加到数组

麦登

我有这个剧本

tests=()
igrepy -l $1 . | while read -r line
do
    // some processing
    tests+=("${second[0]}")
done
echo ${tests[@]}

我检查了“ second”是否有结果,但确实如此,但是我的回声返回了一个空白字符串。这里出了什么问题?这在rhel6上,“ igrepy”是不区分大小写的grep的别名,仅搜索python文件

斯蒂芬·哈里斯(Stephen Harris)

您看到的问题是使用的标准“管道创建子外壳” bash

例如,如果你这样做

a=10
echo 100 | read a
echo $a

然后a仍将设置为10bash。

就你而言

igreppy | while read ...
do
  ....
done

并且该while循环中的所有内容都将位于子外壳中。

相反,可以使用流程替换将其重写

while read ...
do
  ....
done < <(igreppy ...)

现在,没有为while循环创建任何子shell

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章