在 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\""

相关内容