2015-04-20 44 views
0

因此,我以字典/ json的形式卷曲了一些数据,并希望使用bash变量。如果我创建一个for循环和封闭的字典,如:Bash的报价特征

for i in {1..5}; do curl blah blah -d '{"key": "value $i"}'; done 

然后将打印出来的,而不是“值1”,“$我的价值。”我认为这是因为包含单个括号(防止bash扩展变量)存在(即使实际值行是双引号)。另外,如果我颠倒所有引号(用double括起来,在它们之间使用单引号),bash然后把我放在下一行用“>”,就好像它期待更多的输入一样。试图逃避角色也没有给我带来好运。

+0

它在单引号。 –

回答

2

{1..5}后的冒号更改为分号。并把$i放在双引号内。

for i in {1..5}; do curl blah blah -d '{"key": "value '$i'"}'; done 

OR

for i in {1..5}; do curl blah blah -d '{"key": "value '"$i"'"}'; done 
+0

对不起,我输入SO时出错。该问题出现在一个分号上。 – derpy

+2

或'for in in {1..5};做卷曲等等blah -d'{“key”:“value'”$ i“'”}';完成' –

+0

我不确定问题是什么,因为你的原始答案工作正常,至少回到bash 3.2以及4.3 - 就像评论中的版本一样? –

2

外壳不展开单引号内的变量,可以使用:

for i in {1..5} 
do 
    curl blah blah -d "{\"key\": \"value $i\"}" 
done