Portál AbcLinuxu, 14. května 2025 04:11

Dotaz: Bash - vytvoření proměnné z "for"

11.4.2006 08:40 Rover | skóre: 10
Bash - vytvoření proměnné z "for"
Přečteno: 278×
Odpovědět | Admin
Dobrý den,

jde mi o odstranění mezer v proměnné $words a vložit výsledek do proměnné (do jedné proměnné -společné).


words="  slovo1     slovo2 slovo3 "
for i in $words
do
    echo $i

done



Toto vyhodí do STOUT co řádek to jednotlivé slovo. 

Já bych potřeboval aby po této části skriptu byly tyto "slova" uložena v proměnné. Prostě aby jsem dále ve skriptu mohl použít tyto slova za sebou (bez mezer). A nejlépe aby za každým slovem se dal přidat středník. Tj výsledek aby byl uložen v proměnné. slovo1; slovo2; slovo3
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.4.2006 09:22 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Bash - vytvoření proměnné z "for"
Odpovědět | | Sbalit | Link | Blokovat | Admin
A co takhle?:
user@stroj:~$ ls -1 test* | awk '{printf $1";"}'
test3.svg;test4.svg;test.dia;test.eps;test.eps~;test.flw;test.flw~;test.karbon;test.karbon~;test.svg;test_z_ooo.w
Jinými slovy
user@stroj:~$ echo $word | awk ...
11.4.2006 09:28 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Bash - vytvoření proměnné z "for"
Sakra, blbě jsem se přehlídl.. V uvedeném případě by to mělo být spíš..
echo $words | sed '{s/\ /;/g}'
V případě že jde o soubor (nebo výpis), v němž jsou položky na jednotlivých řádcích:
user@stroj:~$ cat soubor.txt | awk ..
11.4.2006 09:35 Rover | skóre: 10
Rozbalit Rozbalit vše Re: Bash - vytvoření proměnné z "for"
To je přesně ono.... echo $words | sed '{s/\ /;/g}'

Díky ... asi si to budu muset dopříště natlouci do hlavy :)
Ondroid avatar 11.4.2006 09:47 Ondroid | skóre: 32 | blog: Hombre
Rozbalit Rozbalit vše Re: Bash - vytvoření proměnné z "for"
man tr ;-)
11.4.2006 10:00 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Bash - vytvoření proměnné z "for"
A nnnebo táák.. ;-)
11.4.2006 11:20 Pavel1 | skóre: 33
Rozbalit Rozbalit vše Re: Bash - vytvoření proměnné z "for"
Odpovědět | | Sbalit | Link | Blokovat | Admin
I s tím for a echo by to mělo jít (je potřeba pouze neodřádkovat každým echem) :
# words=" slovo1 slovo2    slovo3"
# for i in $words; { echo -n "$i; "; }; echo
slovo1; slovo2; slovo3;
11.4.2006 11:40 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Bash - vytvoření proměnné z "for"
Odpovědět | | Sbalit | Link | Blokovat | Admin
res=""
for i in $words; do
    res="$res;$i"
done

echo "$res"
poradit si s koncovou ";" si uz asi dokazes
If you hold a Unix shell up to your ear, you can you hear the C.
11.4.2006 11:41 Dunric | skóre: 21
Rozbalit Rozbalit vše Re: Bash - vytvoření proměnné z "for"
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jde to i čistě jen v bashi:
cswords=${words## }
cswords=${cswords%% }
cswords=${cswords// /;}
echo \"$cswords\"
In the garden sleeps a messenger ·
11.4.2006 11:43 Dunric | skóre: 21
Rozbalit Rozbalit vše Re: Bash - vytvoření proměnné z "for"
... a bez cyklů ;-)
In the garden sleeps a messenger ·
11.4.2006 15:49 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Bash - vytvoření proměnné z "for"
A vida! Řešení v čistém BASHi, přesně tak jak tazatel chtěl. Nicméně mluvilo se tady i o sedu a awku, tak já se sem vecpu ještě s pythonem, abych se necítil diskriminován ;-)
words=" slovo1 slovo2 slovo3 "
';'.join(words.split())

'slovo1;slovo2;slovo3'
Akorátže v pythonu je lepší mít list než položky oddělený středníkama.

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.