Shell bash:替换'内的变量值';
抱歉,如果问题很直截了当,但我是shell脚本的新手。 我试着写这样的东西:Shell bash:替换'内的变量值';,shell,variables,Shell,Variables,抱歉,如果问题很直截了当,但我是shell脚本的新手。 我试着写这样的东西: for i in {1..20} do curl "something $i ........ -d 'something "$i" something' " done 问题是未替换单引号部分“”中的第二个$i。应该怎么做才能让它工作 这是因为单引号内的变量未被替换。如果需要变量替换,则需要去掉单引号 你可以预先初始化这个变量 foo="something $i bla bla bla" curl "some
for i in {1..20}
do
curl "something $i ........ -d 'something "$i" something' "
done
问题是未替换单引号部分“”中的第二个
$i
。应该怎么做才能让它工作 这是因为单引号内的变量未被替换。如果需要变量替换,则需要去掉单引号
你可以预先初始化这个变量
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
如上所述,参数不能在单引号内展开,必须使用双引号。唯一的一点是,由于它出现在已经双引号的字符串中,因此必须使用反斜杠(
\
)对其进行转义,如下所示:
$ foo=bar
$ eval "echo \"something \\\"$foo\\\"\""
something "bar"
$foo=bar
$eval“echo\”something\\\“$foo\\\”“”
一些“酒吧”
请注意,在最里面的
“
”之前有三个\
,因为这将扩展两次(一次是在计算eval
的参数时,一次是在计算echo
的参数时),即使整个语句是一个包含在?是的,变量替换在双引号内工作。“”。我看这没问题。正如我提到的,只有单引号内的变量不会被替换。