对不起,如果问题非常简单,但我是 shell 脚本的新手。我正在尝试写这样的东西:
for i in {1..20}
do
curl "something $i ........ -d 'something "$i" something' "
done
问题是$i
单引号部分 '' 中的第二个没有被替换。应该怎么做才能让它工作?
如上所述,单引号内不展开参数,必须使用双引号。唯一的一点是,由于它出现在已经用双引号引起来的字符串中,因此您必须使用反斜杠 ( \
) 将它们转义,如下所示:
$ foo=bar $ eval "echo \"something \\\"$foo\\\"\"" 一些“酒吧”
\
请注意,在最内层之前有三个"
,因为这将被扩展两次(一次在评估 的参数时eval
,一次在评估 的参数时echo
)
这是因为单引号内的变量''
没有被替换。如果你想要变量替换,你需要去掉单引号。
你也许可以预先初始化那个变量
foo="something $i bla bla bla"
curl "something ... ${foo}something"
您的引用不正确。您不需要在第二个周围加上双引号,$i
因为整个内容已经用双引号括起来了。
将其更改为以下内容:
for i in {1..20}
do
curl "something $i ........ -d 'something $i something'"
done