Portál AbcLinuxu, 5. června 2024 07:47


Dotaz: bash a použití binárky dialog a pole z externího obsahu

8.3.2023 22:12 MilanC | skóre: 16
bash a použití binárky dialog a pole z externího obsahu
Přečteno: 244×
Odpovědět | Admin
Ahoj, pro uživatelskou přívětivost využívám dialog. Potřeboval bych ale doplnit výstup z komentářů v externích souborech, což se mi ale nedaří.

Dialog používám dle tohoto příkladu... přičemž pole option/u mě "ar" se snažím naplnit z komentářů v souborech https://serverfault.com/questions/144939/multi-select-menu-in-bash-script

Můj aktuální pokus vypadá nějak takto, ale mám problém načíst celé ty 2-jice či 3jice jako položky pole ar
#OLD_IFS="$IFS"
#IFS=$"\n"
for vlan in $(cat /etc/network/interfaces.d/mc0* | grep '#' | sed -r 's/^#\s+multicast\s(-\s)?(.+)\s+\(VLAN-([0-9]+)\)$/\3 "\2"/i'); do
  ar+=($vlan off)
  #ar+=($vlan)
done
#IFS="$OLD_IFS"
dialog --checklist "Latest news " 20 50 30 "${ar[@]}"

i když ve výpisu třeba dostanu trojici: 179 "nejaky popis vlan" off Tak v tom zobrazení se mi to stále rozbíjí a neumím přijít na to proč.

Komentář na první řádku v každém mc0.* souboru vypadá nějak následovně:
# multicast XYZ (VLAN-171)
Mým cílem je mít pod každou zatrhávací položkou seznamu jeden soubor/komentář/vlan, přičemž je mi jedno, jestli indexová čísla budou odpovídat číslu vlany nebo to bude 1..n a číslo vlany si pak dám případně do toho textového popisku (jen úprava té poslední části sedu).

Podle toho, jak se mi to chovalo se mi i zdálo, že v tom stringu vadí mezery, tak jsem je zkoušel escapovat "\ ", ale ani to mi nepomohlo. S poli v bashi jsem zatím moc nedělal, tak si nejsem jistý, kde přesně je problém.

Děkuji.


Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.3.2023 22:59 X
Rozbalit Rozbalit vše Re: bash a použití binárky dialog a pole z externího obsahu
Odpovědět | | Sbalit | Link | Blokovat | Admin
To parsovani komentare vypada fakt otresne. Neslo by pouzit 'ip link altname', nebo 'ip link alias' a pak to nejak rozumne tahat z /proc nebo 'ip link show'?
8.3.2023 23:13 MilanC | skóre: 16
Rozbalit Rozbalit vše Re: bash a použití binárky dialog a pole z externího obsahu
Nešlo, protože v tu dobu není tato konfigurace ještě aktivní. Resp. až na základě potvrzeného dialogu právě provedu úpravy v networking.

Drobně jsem to zjednodušil a vynechal jeden grep.
head -1 -q /etc/network/interfaces.d/mc0* | sed -r 's/^#\s+multicast\s(-\s)?(.+)\s+\(VLAN-([0-9]+)\)$/\3 "\2"/i'
Řešení 1× (MilanC (tazatel))
9.3.2023 22:25 .
Rozbalit Rozbalit vše Re: bash a použití binárky dialog a pole z externího obsahu
Odpovědět | | Sbalit | Link | Blokovat | Admin
# dejme tomu, že v těch datech nemůže být '|'
while IFS='|' read -r tag item; do
    ar+=("$tag" "$item" off)
done < <(... sed -r '.../\3|\2/i')
9.3.2023 23:20 MilanC | skóre: 16
Rozbalit Rozbalit vše Re: bash a použití binárky dialog a pole z externího obsahu
Díky moc, ještě jsem se s tím tedy trochu natrápil, ale funguje to skvěle. :-)
10.3.2023 12:18 ChatBot GPT-3
Rozbalit Rozbalit vše Re: bash a použití binárky dialog a pole z externího obsahu
Odpovědět | | Sbalit | Link | Blokovat | Admin
for vlan in $(grep -rhE '# multicast .* \(VLAN-[0-9]+\)' /etc/network/interfaces.d/mc0* | sed -r 's/^#\s+multicast\s+-?\s?(.+)\s+\(VLAN-([0-9]+)\)$/\2 "\\1"/i'); do ar+=($vlan off) done

dialog --checklist "Latest news " 20 50 30 "${ar[@]}"

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.