* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Maggio 01, 2024, 03:14:27 am

Inserisci il nome utente, la password e la durata della sessione.

261 Visitatori, 0 Utenti

Autore Topic: [Risolto] Estrarre righe prodotte dal comando lsblk  (Letto 438 volte)

petrusic

  • Hero Member
  • *****
  • Post: 591
  • Karma: +0/-0
[Risolto] Estrarre righe prodotte dal comando lsblk
« il: Novembre 22, 2023, 07:36:37 pm »
Mi dispiace dover ricorrere ancora al vostro aiuto, ma sono di nuovo bloccato con un mio script.
Ad un certo punto lo script esegue il comando lsblk per estrarre gli UUID di 3 partizioni che contengono nel nome "Etichetta di sistema" le stringhe bkp_giornaliero1, bkp_giornaliero2, bkp_giornaliero3.
Per riconoscerle e caricare le tre righe che le contengono, ho preparato le seguenti istruzioni:
Codice: [Seleziona]
listaUUID=$(lsblk -o NAME,MOUNTPOINT,LABEL,PATH,UUID)
declare -a TbOutput
IFS=$'\n'
TbOutput=(`lsblk -o NAME,MOUNTPOINT,LABEL,PATH,UUID | grep -i "bkp_giornaliero" | tr IFS ' '`)
TotEle=${#TbOutput[*]}
echo "righe lette= ${#TbOutput[*]}"
for ((ii=0;ii\<${TotEle};++ii));do
echo -n "TbOutput[${ii}]="; echo ${TbOutput[ii]}
echo "-------"
echo "Lista UUID = ${listaUUID}"

Ecco che cosa viene fuori:
Codice: [Seleziona]
righe lette= 3
TbOutput[0]=├─sdb1                                    bkp_giornaliero1 /dev/sdb1   381fb2cb-08ba-4f46-978b-bae65df24c90
-------
Lista UUID = NAME   MOUNTPOINT                         LABEL            PATH        UUID
loop0  /snap/bare/5                                        /dev/loop0 
loop1  /snap/chromium/2686                                 /dev/loop1 
loop2  /snap/chromium/2695                                 /dev/loop2 
loop3  /snap/core/16202                                    /dev/loop3 
loop4  /snap/core18/2790                                   /dev/loop4 
loop5  /snap/core18/2796                                   /dev/loop5 
loop6  /snap/core20/2015                                   /dev/loop6 
loop7  /snap/core22/864                                    /dev/loop7 
loop8  /snap/cups/980                                      /dev/loop8 
loop9  /snap/curl/1754                                     /dev/loop9 
loop10 /snap/firefox/3290                                  /dev/loop10
loop11 /snap/firefox/3358                                  /dev/loop11
loop12 /snap/gimp/405                                      /dev/loop12
loop13 /snap/gimp/393                                      /dev/loop13
loop14 /snap/gnome-42-2204/141                             /dev/loop14
loop15 /snap/gnome-3-38-2004/143                           /dev/loop15
loop16 /snap/gtk2-common-themes/13                         /dev/loop16
loop17 /snap/gtk-common-themes/1506                        /dev/loop17
loop18 /snap/gtk-common-themes/1535                        /dev/loop18
loop19 /snap/snap-store/467                                /dev/loop19
loop20 /snap/snap-store/959                                /dev/loop20
loop21 /snap/snapd/20092                                   /dev/loop21
loop22 /snap/snapd/20290                                   /dev/loop22
loop23 /snap/snapd-desktop-integration/83                  /dev/loop23
loop24 /snap/vlc/3721                                      /dev/loop24
sda                                                        /dev/sda   
├─sda1 /boot/efi                                           /dev/sda1   4637-4332
├─sda2 /                                                   /dev/sda2   a34c6b2e-1316-436a-ac11-efbd946196be
├─sda3                                                     /dev/sda3   efa629f6-34dc-4b86-9eb8-1125af45e53e
├─sda4                                                     /dev/sda4   e83830b8-b36b-4fb2-b203-8d5e983713b0
├─sda5                                                     /dev/sda5   72d035fb-482f-458d-a6b6-1576c2efcd50
├─sda6                                                     /dev/sda6   81e5c238-4eb9-4a88-bf24-6f5304bab88d
└─sda7                                                     /dev/sda7   3f45de5a-3c59-4efb-bd4d-4015543d2944
sdb                                                        /dev/sdb   
├─sdb1                                    bkp_giornaliero1 /dev/sdb1   381fb2cb-08ba-4f46-978b-bae65df24c90
├─sdb2                                    bkp_giornaliero2 /dev/sdb2   aa228263-d6d5-49c5-959a-ac0890454db2
├─sdb3 /media/petrus/bkp_giornaliero3     bkp_giornaliero3 /dev/sdb3   485fda6b-a70c-4f2b-bc3b-97f29fddee43
├─sdb4                                                     /dev/sdb4   
├─sdb5                                    bkpUbuntu        /dev/sdb5   0cb8ca1f-c6ff-45ad-8075-c087e51e019f
└─sdb6                                    bkpLinuxMint     /dev/sdb6   9db2ace3-959f-4471-8fb3-38d697f78848
sdc                                                        /dev/sdc   
└─sdc1 /media/dirdati                     archivio dati    /dev/sdc1   80cb4e0e-2ae4-4820-a77c-8709f1078cb7

Ho riportato anche l'output prodotto dal comando lsblk, per completezza di informazioni.

Sicuramente sbaglio od ometto qualcosa, per cui l'array si forma con una sola riga, nonostante che il totale degli elementi caricati, citato con l'istruzione echo, sia 3. Purtroppo non riesco a capire l'errore commesso.
« Ultima modifica: Novembre 23, 2023, 03:50:20 pm da petrusic »
ciao ciao

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2871
  • Karma: +20/-4
Re:Estrarre righe prodotte dal comando lsblk
« Risposta #1 il: Novembre 23, 2023, 11:24:17 am »
lo script che hai messo nel post conteneva un paio di errori:
  • il ciclo for non veniva chiuso con "done"
  • nella condizione del for c'era un backslash

io ho sostituito la stringa di ricerca "bkp_giornaliero" con "SWAP" e da me ora funziona
vedi se è a posto anche per te

Codice: [Seleziona]
listaUUID=$(lsblk -o NAME,MOUNTPOINT,LABEL,PATH,UUID)
declare -a TbOutput
IFS=$'\n'
TbOutput=(`lsblk -o NAME,MOUNTPOINT,LABEL,PATH,UUID | grep -i "SWAP" | tr IFS ' '`)
TotEle=${#TbOutput[*]}
echo "righe lette= ${#TbOutput[*]}"
for ((ii=0;ii<${TotEle};ii++));do
    echo -n "TbOutput[${ii}]="; echo ${TbOutput[ii]}
done
echo "-------"
echo "Lista UUID = ${listaUUID}"


risultato
Codice: [Seleziona]
righe lette= 1
TbOutput[0]=├─nvme0n1p3 [SWAP]            /dev/nvme0n1p3 973d8e24-001c-4c85-ba53-d3f9abee9200
-------
Lista UUID = NAME        MOUNTPOINT  LABEL PATH           UUID
sda                           /dev/sda       
nvme0n1                       /dev/nvme0n1   
├─nvme0n1p1 /boot/efi         /dev/nvme0n1p1 F5B2-6CA9
├─nvme0n1p2 /                 /dev/nvme0n1p2 91f3013c-0b53-46a6-93a6-04bd262d9b4e
├─nvme0n1p3 [SWAP]            /dev/nvme0n1p3 973d8e24-001c-4c85-ba53-d3f9abee9200
├─nvme0n1p4                   /dev/nvme0n1p4 0556b984-afb7-4f92-8398-9a59e37ecde4
└─nvme0n1p5 /media/dati       /dev/nvme0n1p5 614ee29c-5a9d-457d-bb12-7c442f8d2048



Edit:
per quanto riguarda lsblk, prova anche questi parametri
Codice: [Seleziona]
lsblk -lo NAME,MOUNTPOINT,LABEL,PATH,UUID
lsblk -Po NAME,MOUNTPOINT,LABEL,PATH,UUID

il primo (-l) fa una lista più pulita senza caratteri strani (tipici dell'albero)
il primo (-P) fa una lista ma con formato "chiave"="valore"

uno dei 2 potrebbe esserti utile


« Ultima modifica: Novembre 23, 2023, 11:30:23 am da nomorelogic »
Imagination is more important than knowledge (A.Einstein)

petrusic

  • Hero Member
  • *****
  • Post: 591
  • Karma: +0/-0
Re:Estrarre righe prodotte dal comando lsblk
« Risposta #2 il: Novembre 23, 2023, 03:49:48 pm »
lo script che hai messo nel post conteneva un paio di errori:
  • il ciclo for non veniva chiuso con "done"
  • nella condizione del for c'era un backslash
E' vero. Il primo errore non l'avevo proprio visto, il secondo è un errore che mi riporto dal passato, ma non l'avevo notato perchè, cercando una sola riga, funzionava comunque.
Grazie.
Citazione da: nomorelogic
per quanto riguarda lsblk, prova anche questi parametri
Codice: [Seleziona]
lsblk -lo NAME,MOUNTPOINT,LABEL,PATH,UUID
lsblk -Po NAME,MOUNTPOINT,LABEL,PATH,UUID

il primo (-l) fa una lista più pulita senza caratteri strani (tipici dell'albero)
il primo (-P) fa una lista ma con formato "chiave"="valore"

uno dei 2 potrebbe esserti utile
Si, bellissimi tutti e due, soprattutto il secondo.
Grazie, applicherò quello che mi risulterà più pratico nel trattare la risposta al comando.

 :)
ciao ciao

 

Recenti

How To

Utenti
Stats
  • Post in totale: 18784
  • Topic in totale: 2236
  • Online Today: 465
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 261
Total: 261

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.