私はしばしばどこかに変更を適用し、find
それが他のコードに影響を与える場所を見つける必要があるときにコードプロジェクトで実行するので、それを簡単にするために非常に小さなスクリプトを書く方法を考えましたblah.sh
。
#!/bin/bash -eu
if [ $# -ne 3 ]; then
echo "Three inputs required"
else
find $1 -name $2 -exec grep -iHn $3 {} \;
fi
問題は、3番目のパラメータ(検索しているテキスト)にスペースが含まれているとエラーが発生することです。たとえば、ナビゲートしようblah . '*.php' 'foo bar'
としたgrep: bar: No such file or directory
各ファイルを返します。grep
私はこれが愚かな間違いであると確信しており、bashに慣れていません。
答え1
次のことを試してみましたか?
find "$1" -name "$2" -exec grep -iHne "$3" {} +
引用符がない場合、bash は変数に対して単語分割とファイル名の生成を実行するため、変数は複数の引数で渡されます。