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

Re: Seguito di: cron che non accetta opzioni



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


Reply to: