Czy moge zmienic wartosc dla eksportowanej zmiennej ? Jesli nie, to jaka jest altenatywa dla tego problemu ?

0

Czesc! Nie znam dobrze basha, a musze wykonac pewne zadanie. Nie wiem, czy bash posiada takie mozliwosci, jestem programista web, wiec takie cos byloby norma, ale czy w bashu ?

Otoz, mamy pewna zmienna X ktore jest wynikiem curl'a wyswietla nam sie ladny wynik json, nastepnie za jakis czas ponownie musimy zrobic zapytanie i zastapic dane ktore znajdowaly sie pod zmienna X, taki update znany z aplikacji chociazby webowych, ze nowe wartosci sa update'towane i zastepuja miejsce starego, a nie tworzy sie nowy wpis. Czy jest takie cos mozliwe w bashu ?

Zrobilem wersje bez takiej akcji czyli mamy po prostu cos w rodzaju

DATA='';
function getData {
  DATA=$(curl -s https://jsonplaceholder.typicode.com/users)
echo $DATA;
}

 while sleep 60; do getData; done

To bedzie nam wyswietlalo jedno pod drugim, nie robi update'a. Wpadlem na pomysl, zeby zrobic zmienna ktora potem wyeksportuje do kolejnego shell'a, bo uruchomie getData jako osobny skrypt i tam bym zmodyfikowal ta wartosc i jakos magicznie pokazal w parent ? No wlasnie.. nie wiem czy tak sie da w ogole.

Z gory dzieki za pomoc

0

Tak, da się.

0

Jestes w stanie podpowiedziec? Zrobilem na razie cos takiego (nie wiem czy dobrze)

 export DATA=''
 source ./getData.sh
 echo "$DATA";

getData.sh

DATA=$(curl -s https://jsonplaceholder.typicode.com/users)

ale teraz, nawet jak zablokuje to w petli while i zrobie sleep to wartosci beda jedne pod drugim. Teraz pytanie czy mozna to podbieniac przez referencje czy robic hack'a i czyscic ekran i wypisywac tylko jedno.

0

Malo pomocni jestescie. Na SO pan wyzej od razu by dostal punkty na minusie. Jakby ktos szukal rozwiazania niech poczyta o watch

0

przeczytałem kilka razy obie twoje wypowiedzi i nie wiem co chcesz osiągnąć :/ Nie mam pojęcia co robi update.

jak zrobisz plik get_data.sh i w nim

#!/bin/bash
DANE_Z_JSONA = $(curl -s https://jsonplaceholder.typicode.com/users)
export DANE_Z_JSONA

teraz jak w innym skrypcie uruchomisz ten skrypt to potem echo $DANE_Z_JSONA powinno Ci zwrócić ostatnie odczytane dane. Ale nie mam pojęcia czy o to Ci chodzi

0

Napisałeś to niezbyt precyzyjnie. Chodzi Ci o pokazywanie wyniku ciągle w jednym miejscu ekranu? Zainteresuj się zatem komendą watch

0

Raczej echo " "

0

Chodzi o pewną sztuczkę, którą można nazwać hm.. wieloliniowym paskiem postępu. Najprościej wykorzystać printf "\033c" w następujący sposób:

DATA='';
function getData {
  printf "\033c"
  DATA=$(curl -s https://jsonplaceholder.typicode.com/users)
  echo $DATA;
}
 while sleep 60; do getData; done

W ten sposób masz na ekranie ostatnią wartość zmiennej DATA.

1 użytkowników online, w tym zalogowanych: 0, gości: 1