abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 21:21 | Nová verze Ladislav Hagara | Komentářů: 0
včera 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 0
včera 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 1
6.12. 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 26
6.12. 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (23%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 788 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Jak vypsat data z pole v BASH

20.9.2012 19:01 Petr
Jak vypsat data z pole v BASH
Přečteno: 1039×
Zdravím, poradí prosím někdo jak bych mohl cyklem třeba pomocí for nebo i nějak jednodušeji vypsat vždy jednu celou položku v poli? Děkuji za pomoc
DMN=("aaa|dasdsaa|ddasddd"
     "bbb|dasdsaa|ddasddd"
     "ccc|dasdsaa|ddasddd")

for
   echo ??? // výsledek aaa
   echo ??? // výsledek dasdsaa
   echo ??? // výsledek ddasddd
done

Odpovědi

20.9.2012 19:14 Kit
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
Pokud by to nebylo v poli, ale v souboru nebo jako výstup nějakého příkazu, bylo by to o dost jednodušší. Skutečně tam musí figurovat to pole?
20.9.2012 19:43 Petr
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
Pokud by to nebylo v poli, ale v souboru nebo jako výstup nějakého příkazu, bylo by to o dost jednodušší. Skutečně tam musí figurovat to pole?
Tak nemusí tam figurovat pole, ale pokud to bude v souboru, tak jsem myslel, že to bude ještě složitější, navíc si to ani nedokážu moc představit jak to mysliš.
20.9.2012 20:00 Kit
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
Například vypsání prvního sloupečku:
cut -d\| -f 1 <data.txt
Nebo druhý sloupeček výstupu z jiného programu:
program | cut -d\| -f 2
Formátovaný výstup:
program | awk -F'|' '{printf "A: %s\nB: %s\nC: %s\n\n",$1,$2,$3}'
A: aaa
B: dasdsaa
C: ddasddd

A: bbb
B: dasdsaa
C: ddasddd

A: ccc
B: dasdsaa
C: ddasddd
apod. Možností je mnoho, ale ve chvíli, kdy to někdo nacpe do pole, je jich o něco méně a jsou s tím občas problémy.
20.9.2012 20:30 Petr
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
Moc tomu nerozumím co jsi napsal:-( Navíc bych potřeboval s každou hodnotou nadále pracovat... A co tohle? Tohle by fungovat mělo, ne? Ale mám tam nějakou chybu na kterou nemůžu přijít.
DMN=("aaa|dasdsaa|ddasddd"
     "bbb|dasdsaa|ddasddd"
     "ccc|dasdsaa|ddasddd")

i=0
for i in ${!DMN[*]}
do
   IFS="|"
   
   ARRAY=${DMN[$i]}
   
   echo ${ARRAY[0]}
   echo ${ARRAY[1]}
   echo ${ARRAY[2]}
done
20.9.2012 21:01 Kit
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
Bash byl spíš navržen pro spouštění programů a práci se soubory. Práce s proměnnými je něco navíc a je s tím spojeno dost bezpečnostních rizik.

Můžeš zkusit příkaz read, ale cykly v Bashi nepatří zrovna k nejrychlejším. Je lepší zapřáhnout některý z externích programů, které s daty umí pracovat mnohem lépe než Bash.

Velmi často se tu stává, že někdo řeší malý dílčí problém, který by se ze širšího pohledu vůbec řešit nemusel. Zpracování položek pole k nim patří. Je lepší, když to pole vůbec nevznikne a zpracují se přímo vstupující data. Bash se prostě programuje jinak, než jsme zvyklí z procedurálních jazyků.
20.9.2012 21:05 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
ARRAY=${DMN[$i]}
má být
ARRAY=(${DMN[$i]})
Tady to je dvojím způsobem (druhý je spíš na zamyšlení „co to dělá“):
#!/bin/bash

DMN=("aaa|dasdsaa|ddasddd"
     "bbb|dasdsaa|ddasddd"
     "ccc|dasdsaa|ddasddd")

for (( i=0; i < ${#DMN[@]}; i++ )); do
   echo "${DMN[$i]}"
done

OLDIFS=$IFS
IFS='|'
for (( i=0; i < ${#DMN[@]}; i++ )); do
  var=(${DMN[$i]})
  for (( j=0; j < ${#var[@]}; j++ )); do
    echo "${var[$j]}"
  done
done
IFS=$OLDIFS

for (( i=0; i < ${#DMN[@]}; i++ )); do
  var=${DMN[$i]}
  while [ 1 ]; do
    varout=${var%%|*}
    var=${var#*|}
    echo "${varout}"
    if [[ "$var" != *\|* ]]; then
      echo "${var}"
      break
    fi
 done
done
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
20.9.2012 19:29 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
Bash neumí vícerozměrná pole.
21.9.2012 09:42 NN
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
To teda umi.
21.9.2012 12:06 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
Už? Jak?
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
21.9.2012 13:27 NN
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
Uz davno, treba takto:
#!/bin/bash

a=(foo bar)
b=(bar foo)
c=(a b)

eval echo \${${c[0]}[0]} \${${c[1]}[0]}
21.9.2012 14:09 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
Hezké.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
21.9.2012 15:11 NN
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
;)
22.9.2012 15:31 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
Ja tam stále vidím tři jednorozměrná pole. Nehledě na to, že eval je nebezpečný.
22.9.2012 17:24 NN
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
Ja tim nic nedokazuju, ale napsat, ze neco proste nejde je o nicem..
22.9.2012 16:08 Kit
Rozbalit Rozbalit vše Re: Jak vypsat data z pole v BASH
Připadá mi to jako zneužívání Bashe k něčemu, k čemu nebyl stvořen. Netvrdím, že to nejde, ale máme k dispozici mnoho jiných nástrojů, které takové úlohy zvládají mnohem lépe, rychleji, přehledněji a bezpečněji.

Funkce eval je sice v mnoha jazycích, ale vždy je u ní uvedeno, že se jedná o funkci pomalou a potenciálně nebezpečnou. Je lépe se jejímu použití vyhnout a zpravidla to jde. Jen je nutné se na problém podívat z jiného úhlu.

Založit nové vláknoNahoru

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

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.