Portál AbcLinuxu, 9. května 2025 03:00

Dotaz: Jak na pole v bash

22.3.2013 14:45 Starý kozel
Jak na pole v bash
Přečteno: 716×
Odpovědět | Admin
Zdravím, chtěl bych se zeptat, zda li by mi někdo poradil jak bych mohl (časově náročně) vygenerované pole uložit nějak a pak bych jej mohl v případě potřeby jednoduše někdy jindy jen načíst bez pracného a opětovného generování. Děkuji za pomoc

Řešení dotazu:


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

Odpovědi

22.3.2013 14:53 chrono
Rozbalit Rozbalit vše Re: Jak na pole v bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pravdepodobne najjednoduchšie bude uložiť to ako bash skript a potom sa použije napr. source (alebo .).
22.3.2013 15:24 Starý kozel
Rozbalit Rozbalit vše Re: Jak na pole v bash
No a když mám pole
foo=("prvek1" "prvek2" "prvek3") atd..
jak to mám uložit? Jako takto?
echo "foo=(\"prvek1\" \"prvek2\" \"prvek3\")" > /tmp/array.tmp
dík

22.3.2013 22:15 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak na pole v bash
Pokud chcete klasicku si uložit/načíst soubor, a nejedná se hodnoty obsahující mezeru apod., jsou to třeba čísla apod. tak můžete uložit/načíst:
#!/bin/bash 
foo=('prvek1' 'prvek2' 'prvek3')
#write
echo "${foo[@]}" > save.tmp
#read' 
bar=( $( cat save.tmp ) )
# nebo
# bar=($(<save.tmp))

#print
echo -e "Count: ${#bar[@]}\nValues: ${bar[@]}"
Pokud to obsahuje mezery ale ne nový řádek (nebo jiný zvolený znak):
foo=('prvek1' 'prvek2' 'prvek s mezerou 3')

#write
storeIFS="$IFS"
IFS=$'\n'
echo "${foo[*]}" > save.tmp
IFS="$storeIFS"

#read
storeIFS="$IFS"
IFS=$'\n'
bar=( $( cat save.tmp ) )
# nebo
# bar=($(<save.tmp))
IFS="$storeIFS"

#print
echo -e "Count: ${#bar[@]}\nValues: ${bar[@]}"
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
22.3.2013 15:25 potato
Rozbalit Rozbalit vše Re: Jak na pole v bash
uložiť to ako bash skript
např. pomocí declare -p
22.3.2013 15:56 Starý kozel
Rozbalit Rozbalit vše Re: Jak na pole v bash
Nemůžeš dát příklad? Tady man declare jsem nic nenašel :( Díky
22.3.2013 17:04 potato
Rozbalit Rozbalit vše Re: Jak na pole v bash
???

Tvoje proměnná se jmenuje foo, takže declare -p foo. Nebo nechápu příklad čeho chceš.
22.3.2013 18:56 Starý kozel
Rozbalit Rozbalit vše Re: Jak na pole v bash
Ale kam se to uloží abych to mohl později načíst?
22.3.2013 19:22 chrono
Rozbalit Rozbalit vše Re: Jak na pole v bash
Pri ukladaní sa použije
declare -p foo >> foo.sh
a potom sa to načíta pomocou
. foo.sh
22.3.2013 19:22 chrono
Rozbalit Rozbalit vše Re: Jak na pole v bash
oprava, má tam byť len jeden znak >
declare -p foo > foo.sh
8.4.2013 17:36 V
Rozbalit Rozbalit vše Re: Jak na pole v bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud se používá pro array
declare -p foo > foo.sh
co se používá pro variables? To stejný?
VAR="neco tady je"
declare -p VAR > foo.sh
Dík
8.4.2013 18:35 potato
Rozbalit Rozbalit vše Re: Jak na pole v bash
Jen tak pro srovnání, kolik času zabralo napsat to, cos napsal, a kolik času by zabralo to zkusit?
10.4.2013 21:50 V
Rozbalit Rozbalit vše Re: Jak na pole v bash
Lepčí radu nemáš? V.

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.