bash:替换''里面的变量值

时间:2012-10-24 07:36:01

标签: shell variables

很抱歉,如果问题非常简单,但我是shell脚本的新手。 我想写这样的东西:

for i in {1..20}
do
   curl "something $i ........ -d  'something "$i" something' "
done

问题是单引号部分''中的第二个$i没有被替换。要做到这一点应该怎么做?

3 个答案:

答案 0 :(得分:4)

如上所述,参数不会在单引号内展开,您必须使用双引号。唯一的一点是,因为它出现在一个已经双引号的字符串中,你必须使用反斜杠(\)来转义它们,如下所示:

$ foo=bar
$ eval "echo \"something \\\"$foo\\\"\""
something "bar"

请注意,在最里面的\之前有三个",因为它会被扩展两次(一次在评估eval的参数时一次,一次在评估{{1}的参数时}})

答案 1 :(得分:1)

这是因为单引号''内的变量未被替换。如果你想要变量替换,你需要摆脱单引号。

您可以预先初始化该变量

foo="something $i bla bla bla"
curl "something ... ${foo}something"

答案 2 :(得分:0)

您的报价不正确。你不需要在第二个$i左右使用双引号,因为整个事物已被双引号包围。

将其更改为以下内容:

for i in {1..20}
do
   curl "something $i ........ -d  'something $i something'"
done