小 bash 脚本的问题

小 bash 脚本的问题

当我在某个地方进行更改时,我经常在代码项目中运行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 会对变量执行单词拆分和文件名生成,因此它们最终会作为多个参数传递。

相关内容