したがって、この質問がStackExchangeから100万回以上要求されていることはわかっていますが、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\""