bash中:替换内部变量值“”(bash : replace variable value insi

2019-07-02 11:37发布

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

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

问题是,第二个$i的单引号部分'内不被取代。 应该怎样做,以得到它的工作?

Answer 1:

正如上面所说的,参数不展开单引号内,你必须使用双引号。 唯一的一点是,因为它在一个已经双引号字符串时,你有一个反斜杠逃脱他们( \ ),如下所示:

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

需要注意的是有三个\最里面之前" ,因为这将扩大一倍(一次评估的参数时, eval评估的参数时,一旦echo



Answer 2:

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

你不需经过也许预先初始化变量

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


Answer 3:

你的报价是不正确的。 你不需要围绕第二双引号$i ,因为整个事情是在双引号包围已。

它更改为以下:

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


文章来源: bash : replace variable value inside ' '