Re: delle variabili in bash e in php

Diego Zuccato <[email protected]>
Newsgroups gmane.linux.debian.user.italian
Message-ID <[email protected]>
Il 19/03/2025 14:22, Leonardo Boselli ha scritto:

> Premessa: i dati vengono o inviati da processi esterni creando dei file 
> che contengono all'interno il dato (o da solo o in un record CSV) oppure 
> aggiornati periodicamante da un processo cron
Hint: *standardizza* in un unico formato i dati da leggere. Cioè fai in 
modo che da ogni sorgente arrivino nello stesso formato. Crei dei filtri 
per ogni sorgente che convertono da quel che genera quella sorgente al 
formato che intendi usare dopo. E già hai ridotto notevolmente la 
complessità.

>   1. se ho uno script bash posso fare i test su variabili locali o 
> varibili di ambiente. Come faccio a fare il test sul contenuto di un 
> file, senza dovere fare prima un varlocale=`cat file` ?
Che test devi fare sul contenuto? Per capire se è stato aggiornato può 
essere sufficiente analizzare i metadati, ma se devi proprio guardare il 
contenuto lo devi leggere e parsare.

>   1bis. nel test di bash come metto una formula ?
Dipende dalla formula.

>   2. la presentazione viene fatta da uno script php, in certi casi però 
> è necessario che questo script "solleciti" i dati aggiornati.
> il modo più semplice è fare una chiamata http al server remoto, che però 
> fornsce un record json .
E già nobbuono. Se servono i dati aggiornati, non deve (generalmente) 
essere la presentazione a richiederli ma il filtro di ingresso.

> Questo recold viene decodificato senza problemi con jq ma mi sono 
> trovato di fronte a un grosso problema con php, o chiesto a esperti di 
> quel sistema, ma non hannop saputo dare rispposte valide, e tutti gli 
> esmpi fanno riferimento a record jso "piatti".
> Il record che mi arriva è del tipo
> {"nome":"as001","gate:1":{"last_time":1742374708,"action"=1,"res": 
> [0.04,19]},"gate:2":{"last_time":1742374718,"action"=3,"res":[1.00,0.99]}}
Che sia piatto o meno, è indifferente: accedi allo stesso modo, solo 
specificando più livelli.

> e a me servono gate:1.action e i due valori di res . ma in php non sono 
> riuscito a trovare un modo di tirarli fuori, dovo aver dato 
> $ob=jsondecode($record); (ma var_dump($record) me li fa vedere tutti, 
> quindi la decodifica è giusta ...)
La struttura scritta in modo più leggibile è:
{
   "nome":"as001",
   "gate:1": {
     "last_time":1742374708,
     "action"=1,
     "res": [0.04,19]
     },
   "gate:2": {
     "last_time":1742374718,
     "action"=3,
     "res":[1.00,0.99]
     }
}

Quindi devi usare
$ob['gate:1']['action']
$ob['gate:1']['res'][0]
$ob['gate:1']['res'][1]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.