Bash报价特征

时间:2015-04-20 06:30:51

标签: bash

所以我以字典/ json的形式卷曲一些数据并想要使用bash变量。如果我创建一个for循环并将字典括起来:

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

然后它将打印出“value $ i”而不是“value 1”。我假设这是因为包含单个括号(阻止bash扩展变量)存在(即使实际值行是双引号)。

另外,如果我反转所有引号(用double括起来,在其间使用single),bash然后将我放在下一行“>”好像它期待更多的输入。试图逃避角色也没有给我任何运气。

2 个答案:

答案 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

答案 1 :(得分:2)

shell不会在单引号内扩展变量,请使用:

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