![--param="value"와 "--param=value"의 차이점은 무엇입니까?](https://rvso.com/image/1413932/--param%3D%22value%22%EC%99%80%20%22--param%3Dvalue%22%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
과거에 다음과 같은 내용을 읽었습니다(출처가 기억나지 않음).
./script --param="value"
다음과 비교하여 결과가 다를 수 있습니다.
./script "--param=value"
그리고 이러한 차이점(시스템/OS/배포판/셸을 전환할 때 명백해질 수 있음)으로 인해 항상 --param="value"
. 즉, 내가 "늦은 인용"이라고 부르는 작업을 수행하십시오(후행 부분 또는 최소 하위 집합 주위에 인용문을 배치하고 전체를 인용하지 마십시오).
나는 또한 사람들이 변수를 수정할 때(즉 PATH=/bar:"$PATH"
, 와 비교하여 PATH="/bar:$PATH"
) 이렇게 하는 것을 본 적이 있습니다. 일반적으로 다른 사람들의 행동을 보면 전체 내용을 인용하는 것보다 "늦은 인용"이 더 흔하다고 말하고 싶습니다.
--param="value"
내 질문은: 정말 과 사이에 잠재적인 차이가 있습니까 "--param=value"
? 어떤 내용을 인용해야 할 경우, 일부만 인용하는 것과 전체를 인용하는 것에는 정말 차이가 있나요?
--param="value"
보다는 하는 경향이 있지만 "--param=value"
기술적 차이를 알기 때문이 아니라 정신적으로 분석하기가 더 쉽다고 생각하기 때문에 주로 수행합니다.
답변1
적어도 당신이 언급한 특별한 경우에는 차이가 없습니다. 쉘은 문자를 제거하며 "
최종 결과는 동일합니다. 쉘 인용 문제를 디버깅하기 위해 때로는 argv를 인쇄하는 간단한 프로그램을 사용합니다. 예를 들어,
$ printargs --param="value"
argv[0] = printargs
argv[1] = --param=value
$ printargs "--param=value"
argv[0] = printargs
argv[1] = --param=value
참고용 코드는 다음과 같습니다.
#include <stdio.h>
int main(int argc, char** argv)
{
int i;
for (i = 0; i < argc; ++i) {
printf("argv[%d] = %s\n", i, argv[i]);
}
return 0;
}