$path가 포함된 이 grep 명령을 어떻게 해석합니까?

$path가 포함된 이 grep 명령을 어떻게 해석합니까?

명령 정보:

path=$1  # ---> I am not entirely sure what this means either
if grep -q -rHl --include \*.c --include \*.h "int main" $path 

그래서 내가 이해하는 것은 내용에 "int main"이 있는 .c 및 .h 파일을 재귀적으로 찾고 파일 이름도 에코하려고 한다는 것입니다.

그런데 "$path"는 정확히 무엇을 의미하고 수행합니까?

답변1

쉘 스크립트에는 다음과 같은 개념이 있습니다.위치 매개변수. 기본적으로 명령줄에서 "n"개의 인수를 쉘 스크립트나 함수에 전달할 수 있습니다. 그런 다음 $0, 등 이라는 특수 변수에 저장되며, $1$2변수는 쉘 스크립트에서 액세스할 수 있습니다. 한 가지 주목할 점은 $0변수가 스크립트 자체를 참조한다는 것입니다.

스크립트를 예로 들어 다음과 같이 실행할 수 있습니다.

./myscript.bash /opt/src-code

여기서 매개변수는 /opt/src-code위치 변수에 저장됩니다 $1. 그런 다음 스크립트는 해당 값을 라는 다른 변수에 다시 할당합니다 path. 그러면 그 진술은 유효합니다 path=/opt/src-code.

그런 다음 이 변수는 path명령에 인수로 전달됩니다. grep그런 다음 실제로 grep 명령을 실행할 위치를 결정하고 패턴 일치를 찾습니다. 값이 반환 if되는지 확인하는 스크립트에 지정된 것이 있습니다 .grep

실제로 위 단계는 grep런타임 시 다음 명령으로 축소됩니다(해당 if명령문은 무시하세요).

grep -q -rHl --include \*.c --include \*.h "int main" /opt/src-code

답변2

경로는 코드 소스에 전달된 스크립트 또는 함수에 대한 첫 번째 인수로 설정됩니다.

(--> 대신 #을 주석으로 사용)

답변3

path단지 변수일 뿐입니다. 첫 번째 위치 매개변수에 값을 할당하여 생성됩니다. 그런 다음 $path표현식을 해당 값으로 바꾸십시오. 여기서 표현식은 (grep 명령의 끝에 있음)입니다.

관련 정보