shell 更新管道中的数组

lfapxunr  于 2023-10-23  发布在  Shell
关注(0)|答案(1)|浏览(115)

我一会儿要更新一个数组。这是我的代码:

#!/bin/bash

LIST_OF_FILES=()
find . -name '*.[hc]' -print0 |
  while IFS= read -r -d '' file
  do
    # do some stuff
   
    # at the end
    LIST_OF_FILES+=("$file")
  done
echo "${LIST_OF_FILES[@]}"

但它不工作,我的whellcheck给我的错误:
LIST_OF_FILES的修改是本地的(由管道引起的子 shell )
如何更新我的数组LIST_OF_FILES

eanckbw9

eanckbw91#

使用进程替换而不是管道:

#!/bin/bash
LIST_OF_FILES=()
while IFS= read -r -d '' file
  do
    # do some stuff
   
    # at the end
    LIST_OF_FILES+=("$file")
  done < <(find . -name '*.[hc]' -print0)
echo "${LIST_OF_FILES[@]}"

这样,赋值就保留在当前shell中。

相关问题