Проблема с небольшим сценарием 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' blah . '*.php' 'foo bar' возвращает grep: bar: No such file or directory для каждого файла grep пытался изучить. Я уверен, что это глупая ошибка, я на самом деле не справляюсь с bash ..

вы пробовали вот так:

 find "$1" -name "$2" -exec grep -iHne "$3" {} + 

Без кавычек bash выполняет разбиение слов и генерация имени файла на переменные, поэтому они заканчиваются передачей в виде нескольких аргументов.