BASH에서 변수 주위에 따옴표를 넣으세요.

BASH에서 변수 주위에 따옴표를 넣으세요.

따라서 이 질문이 StackExchange에서 백만 번 이상 요청되었다는 것을 알고 있지만 bash 스크립트의 다른 스레드에서는 솔루션을 구현할 수 없습니다. 어쩌면 제가 너무 멍청해서 답을 이해하지 못할 수도 있으니, 편하게 대해주세요.

단순화를 위해 다음 코드는 내가 수행하려는 작업과 동일합니다.

for i in {1..5}
do
    echo $2.svg | grep 'rect x="$i"' && do_something_if_$i_is_found
done

여기서 문제는 $i를 큰따옴표로 묶으면 "$i"가 문자열로 처리된다는 것입니다.

  1. x="5"다음을 찾고 있기 때문에 작은따옴표를 사용할 수 없습니다.$2.svg
  2. 작은따옴표 안에 큰따옴표를 이스케이프하여 문자열의 일부로 만듭니다. 즉,'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\""

관련 정보