2016-04-24 12 views
0

In der bash-Skript unten bin ich durch 1-10 durchlaufen und ich möchte den Index in die JSON-Zeichenfolge übergeben. Aber ich denke, ich die Dollar-Zeichen falsch bin entkommen, weil die json Ausgabe lautet:Bash-Skript Escape-for-Loop-Index

tester\$i

statt

tester1 tester2

Gibt es eine Möglichkeit, dies zu tun?

#!/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 

Antwort

1

$i muss in doppelten Anführungszeichen Ausbau der variablen und inneren json doppelte Anführungszeichen zu ermöglichen, haben zu entkommen:

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 

Weitere (einfacher) Weg ist, um die Variable zu zitieren:

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

Wenn ich das "Echo" entfernen, erhalte ich einen Syntaxfehler: curl: (3) [globbing] nicht übereinstimmende enge Klammer/Klammer in Spalte 18 – Steve

+0

Verpasste ein '\" '. Ich aktualisierte. – SLePort