Próbuję załadować plik JSON jq
za pomocą tutaj . Jest to dość proste i działa:
$ cat ~/Downloads/json.txt | jq '.name'
"web"
Jednak muszę przypisać wynik tej zmiennej do polecenia. Próbowałem to zrobić i to działa:
$ my_json=`cat ~/Downloads/json.txt | jq '.name'`
$ myfile=~/Downloads/$my_json.txt
$ echo $myfile
/home/qut/Downloads/"web".txt
Ale ja chce /home/qut/Downloads/web.txt
.
Jak usunąć cytaty, tj. Zmienić "web"
na web
?
tr
polecenie ... Przejrzałem 4 różne posty z setkami pozytywnych opinii z ludźmi piszącymi ponad 40 postaci mega-one-linerów, aby wykonać zadanie. Masz właściwe (i prawdopodobnie nowoczesne) rozwiązanie.W konkretnym przypadku
jq
możesz określić, że dane wyjściowe powinny mieć format surowy :Aby zilustrować użycie przykładowego
json.txt
pliku z linku :natomiast
źródło
Możesz użyć
eval echo
tego w następujący sposób:ale nie jest to idealne - może łatwo powodować błędy i / lub wady bezpieczeństwa.
źródło
Jest prostszy i bardziej wydajny, dzięki funkcji usuwania prefiksu / sufiksu natywnej powłoki:
Źródło /programming/9733338/shell-script-remove-first-and-last-quote-from-a-variable
źródło