Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File bash-存储多行文件的变量_File_Bash - Fatal编程技术网

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相隔几秒钟。非常感谢,这是有效的解决方案。因为你和林奇只相隔几秒钟,所以我随机选择了答案。理想情况下,你应该选择最佳答案作为最终答案-这两个答案并不完全相同。非常感谢,这是有效的解决方案。因为你和林奇只相隔几秒钟,所以我随机选择了答案。理想情况下,你应该选择最好的答案作为最终答案——这两个答案并不完全相同。