это действительно меня озадачило.Вот что я пытаюсь сделать:
Я пытаюсь передать статью из newsboat в скрипт.Этот скрипт должен затем извлечь заголовок и URL из статьи.
Вот пример статьи:
Feed: NYT > Home Page
Title: Hit Pause on Brett Kavanaugh
Author: THE EDITORIAL BOARD
Link: https://www.nytimes.com/2018/09/26/opinion/kavanaugh-supreme-court-hearing-delay.html?partner=rss&emc=rss
Date: Thu, 27 Sep 2018 01:58:11 +0200
The integrity of the Supreme Court is at stake.
Статья получает макрос с новостной шлюпкой:
macro R pipe-to "cat | ~/.scripts/newsboat_extract"
Вот рабочий скрипт:
#!/bin/bash
cat > ~/newsboat #I do not really need this file, so if I can cut out saving to a file, I would prefer to
title="$(awk -F: '/^Title:/{for(i=2;i<=NF;++i)print $i}' ~/newsboat)"
url="$(awk -F: '/^Link:/{print $2 ":" $3}' ~/newsboat)"
printf '%s\n' "$title" "$url" >> newsboat_result
Это обеспечивает ожидаемый результат:
Hit Pause on Brett Kavanaugh
https://www.nytimes.com/2018/09/26/opinion/kavanaugh-supreme-court-hearing-delay.html?partner=rss&emc=rss
Я хотел бы избежать сохранения в файл.Однако сохранение в переменную по какой-то причине не работает: и этот сценарий не работает!
#!/bin/bash
article=$(cat)
title="$(awk -F: '/^Title:/{for(i=2;i<=NF;++i)print $i}' "$article")"
url="$(awk -F: '/^Link:/{print $2 ":" $3}' "$article")"
printf '%s\n' "$title" "$url" >> newsboat_result
вывод превращается в следующее:
#empty line
#empty line
Iпонятия не имею, почему скрипт будет вести себя так.Должно быть что-то, что делает, как хранится переменная, верно?
Есть идеи?- Я довольно новичок в bash-скриптинге и awk, так что благодарен также за любые комментарии о том, как решить эту проблему более эффективно.
"" "" "" "" "" "" SOLUTION "" """" "" "" "" "
Это было сделано, спасибо!
#!/bin/bash
article=$(cat "${1:--}")
title="$(awk -F: '/^Title:/{for(i=2;i<=NF;++i)print $i}' <<< "$article")"
url="$(awk -F: '/^Link:/{print $2 ":" $3}' <<< "$article")"
printf '%s\n' "$title" "$url" >> newsboat_result