이제 다음과 같은 스키마가 있다고 가정해 보겠습니다.
Thisisatest="1"
.file
나는 일치하고 싶다정밀한위의 문자열하지만어떤 이유로든 목록의 일부 숫자를 반복하여 변수로 사용하고 다음을 수행하기로 결정했습니다.
Thisisatest="$varhere"
여기서 위의 숫자 $varhere
는 위의 숫자와 같습니다 1
. (루핑 숫자를 언급했지만,이것가능한 향후 사용 사례이자 여전히 예입니다)
이제 일을 더 쉽게 하기 위해 위의 내용과 일치시키고 싶다고 가정해 보겠습니다.정밀한무늬하지만위의 변수와 그 내용을 사용하여:
grep 'Thisisatest="$varhere"' file
파일에 문자열 Thisisatest="1"
과 $varhere
숫자가 포함되어 있습니다 1
.
문제는 이것이 작동하지 않는다는 것입니다.왜냐하면작은따옴표 사이에는 변수 확장이 발생하지 않습니다(위 그림 참조).
다음은 이를 반박하려는 실패한 시도입니다.
- 변수 교체를 위한 콘텐츠 교체
echo "${varhere/[0-9]*/Thisisatest=\"$varhere\"}"
echo
여기서는 출력이 다음과 같은지 확인하는 데 사용됩니다 .옳은문자열이므로 grep...에 대한 입력으로 사용할 수 있으며 다음을 출력합니다.
'Thisisatest="'1'"
- 더 많은 인용문 추가
echo "'Thisisatest="${varhere}"'"
산출:
'Thisisatest='1''
echo ''''Thisisatest=\"${varhere}\"''''
산출:
Thisisatest="'1'"
나머지는 분명합니다... 이제 위의 마지막 시도는 제가 원하는 것에 가까운 것 같지만 여전히 그렇지 않습니다.
위와 같이 할 수 있는 방법이 있나요?
답변1
grep "Thisisatest=\"${varhere}\""
나를 위해 작동합니다. " \
"는 쉘 해석을 통해 다음 문자의 "나는 특수 문자입니다" 플래그를 뒤집습니다.