/ / bash - xmlstarlet -v do $ zmienna - bash, zmienne, curl, xmlstarlet

bash - xmlstarlet -v do zmiennej $ - bash, variables, curl, xmlstarlet

wget ${RSS_URL} -O - 2>/dev/null | xmlstarlet sel -t -m "/rss/channel/item" -v "title" -n -v "link" -n -n

Ta linia wypisuje tytuł (-v "tytuł) iadres URL (-v "link") wpisów w kanale RSS, który mam. Chcę przechowywać tytuł i adres URL w osobnych zmiennych (na przykład $ title i $ url), aby móc później użyć ich do zwijania.

Jak mogę to zrobić?

Odpowiedzi:

1 dla odpowiedzi № 1

Biegać xmlstarlet dwa razy, raz dla każdej informacji, którą chcesz uzyskać.

Aby to było skuteczne, należy pobrać adres URL do pliku lokalnego (więc tylko raz wget), a następnie uruchom xmlstarlet w tym pliku:

title=$(xmlstarlet sel -t -m "/rss/channel/item" -v "title" local.xml)
link=$(xmlstarlet sel -t -m "/rss/channel/item" -v "link" local.xml)

Proponuję takie podejście, ponieważ będzie ono dobrze pasować do białych znaków w elementach, a nawet do nowych linii.

Uwaga: Aby zoptymalizować proces, możesz najpierw przefiltrować dane wejściowe XML, aby utworzyć nowy plik XML zawierający tylko żądane informacje, a następnie uruchomić xmlstarlet ponownie, aby podzielić go na zmienne.


0 dla odpowiedzi nr 2

Możesz też użyć wbudowanej funkcji Bash „read”, aby przypisać wiele zmiennych jednocześnie:

$ read title link <(wget ${RSS_URL} -O - 2>/dev/null | xmlstarlet sel -t -m "/rss/channel/item" -v "title" -o " " -v "link")
$ echo $title
$ echo $link