따라서 이 질문이 StackExchange에서 백만 번 이상 요청되었다는 것을 알고 있지만 bash 스크립트의 다른 스레드에서는 솔루션을 구현할 수 없습니다. 어쩌면 제가 너무 멍청해서 답을 이해하지 못할 수도 있으니, 편하게 대해주세요.
단순화를 위해 다음 코드는 내가 수행하려는 작업과 동일합니다.
for i in {1..5}
do
echo $2.svg | grep 'rect x="$i"' && do_something_if_$i_is_found
done
여기서 문제는 $i를 큰따옴표로 묶으면 "$i"가 문자열로 처리된다는 것입니다.
x="5"
다음을 찾고 있기 때문에 작은따옴표를 사용할 수 없습니다.$2.svg
- 작은따옴표 안에 큰따옴표를 이스케이프하여 문자열의 일부로 만듭니다. 즉,
'rect x=\"$i\"'
답변1
따옴표를 변경해야 합니다.
for i in {1..5}
do
echo "${2}.svg" | grep 'rect x = '$'\042'$i$'\042' && do_something_if_${i}_is_found
done
\042
큰따옴표의 ASCII 표현입니다.
확인하다인간 ASCII
또는 간단하게:
grep "rect x=\"$i\""