很抱歉,如果问题非常简单,但我是shell脚本的新手。 我想写这样的东西:
for i in {1..20}
do
curl "something $i ........ -d 'something "$i" something' "
done
问题是单引号部分''中的第二个$i
没有被替换。要做到这一点应该怎么做?
答案 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