Os dois lados de um tubo estão em processos diferentes. Você não pode compartilhar variáveis entre esses processos. Se você quiser compartilhar dados, terá que passar pelo canal ou usar canais de comunicação alternativos. Se você precisa de canais de comunicação alternativos, você está acima dos recursos do shell, mude para uma linguagem de programação real.
Aqui, passar lot_url
ao lado de img_url
no segundo canal parece ser uma boa solução para mim. Eu passaria na mesma linha. Supondo que seus URLs tenham escapado corretamente, você não precisa de nenhuma citação específica, você pode passá-los na mesma linha. Isso teria a vantagem de permitir um número variável de img_url
s em cada lot_url
.
second_function(){
while read lot_url; do
echo "$lot_url"
curl -s "$lot_url" | sed -nr -e '
#extract img src
' -e "s>^>$lot_url >"
done
}
third_function(){
while read lot_url img_url; do
echo "<a href="$lot_url"><img src="$img_url" /></a>"
done
}