用于循环索引的Bash脚本转义

时间:2016-04-24 02:03:07

标签: bash loops curl escaping

在下面的bash脚本中,我循环到1-10,我想将索引传入json字符串。但是,我认为我正在错误地逃避美元符号,因为json输出是:

  

测试仪\ $ I

而不是

  

tester1 tester2

有办法做到这一点吗?

#!/bin/bash
for i in `seq 1 10`;
do
    curl -X POST http://localhost:9000/api/resources --header Content-Type:application/json --data '{"name":"tester\\$i", "text":"some text"}'
done   

1 个答案:

答案 0 :(得分:1)

for i in `seq 1 10`; do curl -X POST http://localhost:9000/api/resources --header Content-Type:application/json --data "{\"name\":"tester$i\", \"text\":\"some text\"}" done 必须加双引号才能扩展变量,内部json双引号必须转义:

curl -X POST http://localhost:9000/api/resources --header Content-Type:application/json --data '{"name":"tester'$i'", "text":"some text"}'

另一种(更简单的)方法是引用变量:

system(3)