![在 BASH 中的变量周围加上引号](https://linux22.com/image/215111/%E5%9C%A8%20BASH%20%E4%B8%AD%E7%9A%84%E5%8F%98%E9%87%8F%E5%91%A8%E5%9B%B4%E5%8A%A0%E4%B8%8A%E5%BC%95%E5%8F%B7.png)
所以我知道这个问题在 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\""