이제 다음과 같은 패턴이 있다고 가정해 보겠습니다.
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}\""
나를 위해 작동합니다. " \
"는 ONE 쉘 해석을 통해 다음 문자의 "나는 특수 문자입니다" 플래그를 뒤집습니다.