存储多行文件的变量



这是我的代码:

grep $to_check $forbidden >${dir}variants_of_interest;
cat ${dir}variants_of_interest | (while read line; do 
     #process ${line} and echo result
done;
)

感谢 grep,我得到了一行数据,然后在循环中单独处理。我想使用变量而不是使用文件variants_of_interest

这样做的原因是,我担心写入文件数千次(因此从中读取)会迅速减慢计算速度,因此我希望避免写入文件会有所帮助。你觉得怎么样?

我必须执行数千个 grep 命令,variants_of_interest最多只包含 10 行。

感谢您的建议。

你可以让它grep输出直接传递给循环:

grep "$to_check" "$forbidden" | while read line; do 
  #process "${line}" and echo result
done

我删除了您示例中的显式子外壳,因为由于管道的原因,它已经在单独的子壳中。另外不要忘记引用 $line 变量以防止在使用时扩展空格。

您不必编写文件。只需迭代 grep 的结果:

grep $to_check $forbidden | (while read line; do 
     #process ${line} and echo result
done;
)

这可能适合您:

OIFS="$IFS"; IFS=$'n'; lines=($(grep $to_check $forbidden)); IFS="$OIFS"
for line in "${lines[@]}"; do echo $(process ${line}); done

第一行将grep的结果放入变量数组lines

第二行处理数组,lines将每一行放入变量line

相关内容

  • 没有找到相关文章

最新更新