작은 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는 변수에 대해 단어 분할 및 파일 이름 생성을 수행하므로 변수는 여러 인수로 전달됩니다.

관련 정보