명령 정보:
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 명령의 끝에 있음)입니다.