当我在某个地方进行更改时,我经常在代码项目中运行find
,并且必须找到它影响其他代码的位置,因此我考虑编写一个非常小的脚本来使这更容易,称之为blah.sh
:
#!/bin/bash -eu
if [ $# -ne 3 ]; then
echo "Three inputs required"
else
find $1 -name $2 -exec grep -iHn $3 {} \;
fi
问题是,当第三个参数(我正在查找的文本)包含空格时,我收到错误。例如,blah . '*.php' 'foo bar'
返回尝试探索的grep: bar: No such file or directory
每个文件。grep
我确信这是一个愚蠢的错误,我并没有真正熟悉 bash..
答案1
你有没有尝试过这样的:
find "$1" -name "$2" -exec grep -iHne "$3" {} +
如果没有引号,bash 会对变量执行单词拆分和文件名生成,因此它们最终会作为多个参数传递。