【发布时间】:2017-05-23 22:32:37
【问题描述】:
我正在尝试使用-F(固定字符串)参数将文件中的“字符串”作为输入传递给grep。
来自grep 手册页,预期的格式是换行符分隔:
-F, --fixed-strings
Interpret PATTERN as a list of fixed strings (instead of regular expressions), separated by newlines, any of which is to be matched.
如何在 bash 中做到这一点?我有:
#!/bin/bash
INFILE=$1
DIR=$2
# Create a newline-separated string array
STRINGS="";
while read -r string; do
STRINGS+=$'\n'$string;
done < <(strings $INFILE);
cd $DIR
for file in *; do
grep -Frn \"$STRINGS\" .
done;
但 grep 会在运行时报告有关输入格式的错误。 Grep 将传递的字符串参数解释为参数——因此需要将它们作为一个大字符串文字传递。
使用 -x 调试 bash 并传递脚本本身给出的第一个参数 (INFILE):
+ grep -Frn '"' '#!/bin/bash' 'INFILE=$1' 'DIR=$2' [...]
【问题讨论】: