如果搜索字符串有空格,则将其视为2个单独的字符串,而不仅仅是一个字符串。如何将搜索字符串视为单个值?使用xargs将需要搜索的文件传递给grep可以正常工作。
这是findInFiles.sh脚本
SEARCH_STR=$1
SEARCH_FILES=$2
# This line return results with search for individual strings
cat $SEARCH_FILES | xargs grep $SEARCH_STR
# This line return no results, while it works fine on command line
cat $SEARCH_FILES | xargs grep "$SEARCH_STR"
这是脚本的执行方式
./findInFiles.sh "go green" /tmp/search_files.out
/tmp/search_files.out has:
src/file1.py
src/file2.py
src/file3.py
再次'cat $ SEARCH_FILES |脚本中的xargs grep $ SEARCH_STR'将“go green”解释为2个单独的单词,而'cat $ SEARCH_FILES | xargs grep“$ SEARCH_STR”'在命令行上运行,但不在脚本中,但不产生任何结果。
已解决:该脚本实际上与'cat $ SEARCH_FILES |一起使用xargs grep“$ SEARCH_STR”'。我一直在用错误的输入来尝试它。遗憾!
答案 0 :(得分:-1)
try like
SEARCH_STR="$1"
SEARCH_FILES=$2
# This line return results with search for individual strings
cat $SEARCH_FILES | grep "$SEARCH_STR"