[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Seguito di: cron che non accetta opzioni



Quasi esatto:

if [[ "$K" == "$2" ]]; then
deve essere con $3

ma una cosa non ho capito:
l'imput è su stdio [che esce da curl] e non nsu textfile. come lo cambio ?


On Mon, 4 Nov 2024, Diego Zuccato wrote:

Direi che devi fare una funzione che faccia il parsing tipo:
-8<--
#!/bin/bash

# parsefile outvar sezione chiave
function parsefile {
 local -n result=$1
 while read A; do
   if [[ "$A" == "$2" ]]; then
     # Trovata la sezione, cerca la entry
     while read L; do
       if [[ "$L" =~ .+:.+ ]]; then
         # L è nel formato key:value
         IFS=":" read K V <<<"$L"
         # Rimuove gli spazi
         V=$(echo $V| xargs)
         if [[ "$K" == "$2" ]]; then
           result=$V
           return 0
         fi
       else
         # Errore: fine sezione/file
         return 1
       fi
     done
   fi
 done
}

val=""

parsefile val acpitz-acpi-0 temp1 < testfile.txt

echo "$val"
-8<--

(questo ritorna come valore tutto il campo, poi puoi farne un ulteriore parsing come ti serve)

Diego

Il 04/11/2024 09:51, Leonardo Boselli ha scritto:
On Mon, 4 Nov 2024, Piviul wrote:

dovrebbe funzionare: $(<tuo comando> | cut -f2 -d: | egrep -o '^([0-9]*[.]*[0-9]*)');

...sempre che abbia capito bene

no, non hai capito tutta la domanda: quella parte era la parte semplice.
quello che mi serve è dare un comando
$(<mio comando>) | filtrodipiviul "record" "campo"
per intendersi, usando come comando sensors , che tutti hanno e possono provare, e che fornisce i dati proprio in quel formato (ogni macchina li da differentemente quindi adattate l'esempio se ho l'output
…
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +33.0°C  (high = +100.0°C, crit = +100.0°C)
Core 0:        +32.0°C  (high = +100.0°C, crit = +100.0°C)
Core 1:        +31.0°C  (high = +100.0°C, crit = +100.0°C)

dell_smm-isa-0000
Adapter: ISA adapter
Processor Fan: 2716 RPM  (min =    0 RPM, max = 4900 RPM)
CPU:            +33.0°C
Ambient:        +27.0°C
SODIMM:         +27.0°C

acpitz-acpi-0
Adapter: ACPI interface
temp1:        +25.0°C  (crit = +107.0°C)

iwlwifi_1-virtual-0
Adapter: Virtual device
temp1:        +33.0°C
…

allora
  filtrodipiviul acpitz-acpi-0 temp1
dovrebbe restituirmi "+25.0" (o anche 25)
e
  filtrodipiviul dell_smm-isa-0000 "Processor Fan"
dovrebbe restituirmi "2716"

sono stato più chiaro ?

--
Leonardo Boselli
Firenze, Toscana, Europa
http://i.trail.it

--
Diego Zuccato
DIFA - Dip. di Fisica e Astronomia
Servizi Informatici
Alma Mater Studiorum - Università di Bologna
V.le Berti-Pichat 6/2 - 40127 Bologna - Italy
tel.: +39 051 20 95786



--
Leonardo Boselli
Firenze, Toscana, Europa
http://i.trail.it

Reply to: