很抱歉,如果这个问题是很简单的,但我对shell脚本一个新手。 我想写的东西是这样的:
for i in {1..20}
do
curl "something $i ........ -d 'something "$i" something' "
done
问题是,第二个$i
的单引号部分'内不被取代。 应该怎样做,以得到它的工作?
很抱歉,如果这个问题是很简单的,但我对shell脚本一个新手。 我想写的东西是这样的:
for i in {1..20}
do
curl "something $i ........ -d 'something "$i" something' "
done
问题是,第二个$i
的单引号部分'内不被取代。 应该怎样做,以得到它的工作?
正如上面所说的,参数不展开单引号内,你必须使用双引号。 唯一的一点是,因为它在一个已经双引号字符串时,你有一个反斜杠逃脱他们( \
),如下所示:
$ foo=bar $ eval "echo \"something \\\"$foo\\\"\"" something "bar"
需要注意的是有三个\
最里面之前"
,因为这将扩大一倍(一次评估的参数时, 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