2017-01-30 7 views
0

mit Ich habe die folgenden Daten in einer Datei -las eine JSON-Datei Shell scipt

{"a" : "10", "b" : "20", "c" : "30"} 

Wenn ich Werte in dieser Variablen lesen -

eval "_value_=\"`cat hello1`\""

echo $_value_ gleich {a : 10, b : 20, c : 30}

Ich kann das nicht mit jq -r lesen. Gibt es eine Möglichkeit, wie ich doppelte Anführungszeichen in Wert auch lesen kann.

+0

http://stackoverflow.com/questions/20488315/read-the-json-data-in-shell-script – Bharat

+0

Das ist eine andere Frage. Ich möchte die Anführungszeichen beim Lesen der Datei. –

+0

Hat meine Antwort oder andere Ihr Problem gelöst? Wenn ja, dann überlege dir bitte, ob du es als Antwort akzeptierst - indem du auf das grüne Häkchen neben der Stimmenzahl klickst. Wenn nicht, sag bitte, was nicht funktioniert hat, damit ich oder jemand anderes dir weiter helfen kann. Vielen Dank. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

Antwort

0

nicht sicher, was das heißt, aber es klingt wie Ihre Datei hello1 enthält:

{"a" : "10", "b" : "20", "c" : "30"} 

und Sie mögen, dass in eine Variable _value_ genannt zu bekommen. Wenn das der Fall ist, sind Sie nur:

_value_=$(< hello1) 

Dann können Sie tun:

echo "$_value_" 
{"a" : "10", "b" : "20", "c" : "30"} 
0

Hier ist eine portable POSIX-Lösung (keine bashisms):

Inhalt hello1 Datei:

{"a" : "10", "b" : "20", "c" : "30"} 

POSIX-Shell-Code:

_value_="$(cat "hello1")" 
echo "$_value_" 

Ausgang:

{"a" : "10", "b" : "20", "c" : "30"} 

Ich bin mir nicht sicher, warum Sie eval verwenden möchten. Dieser Befehl ist sehr gefährlich, besonders wenn Sie sich nicht ganz sicher sind, was Sie in der Datei lesen. Erwägen Sie die Verwendung GNU envsubst, wenn Sie nur Variablen interpretiert müssen (dies unwahrscheinlich, dass Ihre JSON-Eingang gegeben scheint):

_value_="$(envsubst < "hello1")" 
echo "$_value_"