J'essaie de charger un fichier JSON en utilisant jq
par ici . C'est assez simple et cela fonctionne:
$ cat ~/Downloads/json.txt | jq '.name'
"web"
Cependant, je dois affecter la sortie de cette variable à une commande. J'ai essayé de faire ça et ça marche:
$ my_json=`cat ~/Downloads/json.txt | jq '.name'`
$ myfile=~/Downloads/$my_json.txt
$ echo $myfile
/home/qut/Downloads/"web".txt
Mais je veux /home/qut/Downloads/web.txt
.
Comment supprimer les guillemets, c'est- "web"
à- dire passer à web
?
tr
commande ... J'ai parcouru 4 messages différents avec des centaines de votes positifs avec des personnes écrivant plus de 40 méga-lignes pour faire le travail. Vous avez la bonne solution (et probablement moderne).Dans le cas particulier de
jq
, vous pouvez spécifier que la sortie doit être au format brut :Pour illustrer l'utilisation de l'exemple de
json.txt
fichier à partir de votre lien :tandis que
la source
Vous pouvez utiliser
eval echo
comme ceci:mais ce n'est pas idéal - pourrait facilement provoquer des bugs et / ou des failles de sécurité.
la source
Il y a plus simple et efficace, en utilisant la fonction de suppression native des préfixes / suffixes du shell:
Source /programming/9733338/shell-script-remove-first-and-last-quote-from-a-variable
la source