File bash-存储多行文件的变量
这是我的代码:File bash-存储多行文件的变量,file,bash,File,Bash,这是我的代码: grep $to_check $forbidden >${dir}variants_of_interest; cat ${dir}variants_of_interest | (while read line; do #process ${line} and echo result done; ) 多亏了grep,我得到了一行行数据,然后在循环中单独处理。我想使用variable而不是filevariants\u of\u interest 这样做的原因是,
grep $to_check $forbidden >${dir}variants_of_interest;
cat ${dir}variants_of_interest | (while read line; do
#process ${line} and echo result
done;
)
多亏了grep,我得到了一行行数据,然后在循环中单独处理。我想使用variable而不是filevariants\u of\u interest
这样做的原因是,我担心数千次写入文件(并从中读取)会迅速降低计算速度,所以我希望避免写入文件会有所帮助。你觉得怎么样
我必须执行数千个grep命令,并且感兴趣的变体最多只包含10行
谢谢你的建议。你不必写文件。只需迭代grep的结果:
grep $to_check $forbidden | (while read line; do
#process ${line} and echo result
done;
)
你不必写文件。只需迭代grep的结果:
grep $to_check $forbidden | (while read line; do
#process ${line} and echo result
done;
)
您只需使
grep
将其输出直接传递到循环:
grep "$to_check" "$forbidden" | while read line; do
#process "${line}" and echo result
done
在您的示例中,我删除了显式子shell,因为由于管道的原因,它已经位于单独的子shell中。另外,不要忘记引用
$line
变量,以防止使用时出现空格扩展。您只需让grep
将其输出直接传递到循环:
grep "$to_check" "$forbidden" | while read line; do
#process "${line}" and echo result
done
在您的示例中,我删除了显式子shell,因为由于管道的原因,它已经位于单独的子shell中。另外,不要忘记引用
$line
变量,以防止使用时出现空格扩展。这可能适用于您:
OIFS="$IFS"; IFS=$'\n'; lines=($(grep $to_check $forbidden)); IFS="$OIFS"
for line in "${lines[@]}"; do echo $(process ${line}); done
第一行将grep
的结果放入变量数组行
第二行处理数组
行
将每行放入变量行
这可能适用于您:
OIFS="$IFS"; IFS=$'\n'; lines=($(grep $to_check $forbidden)); IFS="$OIFS"
for line in "${lines[@]}"; do echo $(process ${line}); done
第一行将grep
的结果放入变量数组行
第二行处理数组
行
将每行放入变量行谢谢,这有效:)我随机勾选答案,因为你和lynxlynxlynx相隔几秒钟。谢谢,这有效:)我随机勾选答案,因为你和lynxlynxlynx相隔几秒钟。非常感谢,这是有效的解决方案。因为你和林奇只相隔几秒钟,所以我随机选择了答案。理想情况下,你应该选择最佳答案作为最终答案-这两个答案并不完全相同。非常感谢,这是有效的解决方案。因为你和林奇只相隔几秒钟,所以我随机选择了答案。理想情况下,你应该选择最好的答案作为最终答案——这两个答案并不完全相同。