Portál AbcLinuxu, 19. dubna 2024 07:21


Dotaz: problém s proměnnýma v bashi a sedu

21.1.2012 21:35 jeleniste | skóre: 13 | blog: Prokustovo lože
problém s proměnnýma v bashi a sedu
Přečteno: 265×
Odpovědět | Admin
Mám následující problém: Mám číselník, podle kterýho potřebuju v několika tisících mapfajlů změnit název databáze, problém je v tom, že ty proměnný se mi nedosaděj mezi uvozovkama, v tom echu to funguje, ale mezi těma uvozovkama nikoliv. Netušíte, jak to oeskejpovat?? Díky
while read kod_obce stara_db url server heslo nova_db; do
sed 's/dbname=${stara_db}/dbname=${nova_db}/g;' abertamy.map > outp
echo isdfdfsdf${stara_db}
done < portaly.zmenit.test
Nejsem blbý, jen se hloupě ptám

Ř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

Řešení 1× (Lol Phirae)
21.1.2012 21:41 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hm, tak s dvojitejma uvozovkama to funguje jak ma, seduje to co jsem potreboval.
Nejsem blbý, jen se hloupě ptám
21.1.2012 21:41 Kit
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkus místo apostrofů použít uvozovky.
21.1.2012 22:16 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Díky, s těma mi to funguje. Sem ani netušil, že s nima bude ten sed fungovat jak má. Dík
Nejsem blbý, jen se hloupě ptám
21.1.2012 21:46 alkoholik | skóre: 40 | blog: Alkoholik
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mel by sis nastudovat rozdil mezi " a '.
V zasade jde o to, ze mezi ' se uz ani nenahrazuji promenne.
Zkus si echo '$LANG' vs. echo "$LANG"
21.1.2012 22:11 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
No a když budu potřebovat ty jednoduchý uvozovky nezbytně použít?? Dá se to nějak občůrat?? Když bych třeba nepoužíval sed, ale awk a potřeboval nastavit FS?? Díky
Nejsem blbý, jen se hloupě ptám
21.1.2012 22:55 l4m4
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Ne, občůrat to nejde.

Ale nic ti nebrání kombinovat obojí v jednom příkazu, klidně i v jednom argumentu:

echo '$x='"$x"
21.1.2012 23:11 Kit
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Tak tohle jsem neznal. Stejně bych to nepoužil, protože jednodušší je pro mne zápis
echo "\$x=$x"
21.1.2012 23:36 l4m4
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Znáš-li apostrof i uvozovky, tak už na tom není co dále znát.
21.1.2012 23:54 Kit
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Mám na mysli spojení stringů bez operátoru. Prostě mě to zatím nenapadlo. Asi proto, že v jiných jazycích to tak nejde.
22.1.2012 12:11 l4m4
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Což jen potvrzuje moje tvrzení. Tedy, že z toho plyne, že nevíš, co dělají uvozovky a apostrofy.

Žádné stringy neexistují.

Každý statement shellu se expanduje podle určitých pravidel, pak se rozdělí na slova podle hodnoty IFS a výsledek se spustí. Uvozovky a aprostrofy pouze ovlivňují expansi a dělení na slova.
21.1.2012 23:07 Kit
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Co jsou to "jednoduchý uvozovky"? Myslíš tím apostrofy?
echo "Řetězec s 'apostrofy' i \"uvozovkami\" se dá napsat snadno"
Nenapadá mě příklad, kdy by nebylo možné vystačit s uvozovkami a musel bych použít apostrofy. Včetně zmíněného awk.
21.1.2012 23:35 l4m4
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Musel? Ne. Ale jakmile dojde na řetezce, které už samy o sobě obsahují dost backslashů, což zrovna regulární výrazy bývají, tak nedávám přednost tomu je ještě dále množit.
22.1.2012 10:59 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
No, treba kdyz budu chtit natlouct do databáze pomocí awk > psql COPY deset tisíc tabulek v texťáku a nektery budou oddeleny tabulatorem, nekery mezerou a nektery strednikem..
Nejsem blbý, jen se hloupě ptám
22.1.2012 11:17 Kit
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Ale to se už bavíme o kvantitě a přehlednosti. Jsou situace, kdy se vích hodí apostrofy, jindy zase uvozovky. Ale i v uvedeném příkladu v tom nevidím velký problém. Napíši ho normálně, dám nahradit " za \" a je to. Nebo si části textu obsahující větší množství uvozovek uložím do proměnných a pak je v řetězci expanduji. Zrovna v uvedeném případě by se to hodilo, protože by se zápis zpřehlednil.
22.1.2012 12:18 l4m4
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Mimochodem, pro konstrukci $'...' žádný uvozovkový ekvivalent neexistuje.
28.1.2012 14:18 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Odpovědět | | Sbalit | Link | Blokovat | Admin
řešení, který mě funguje je '\'' ale to funguje jen v řetězcích omezených ', takže je třeba spojit to z více řetězců a použít echo a v awku funguje "'"'"'"
Nejsem blbý, jen se hloupě ptám
28.1.2012 14:42 Lol Phirae | skóre: 23
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
řešení, který mě funguje je '\'' ale to funguje jen v řetězcích omezených ', takže je třeba spojit to z více řetězců a použít echo a v awku funguje "'"'"'"
Tos to opravdu zpřehlednil; nejsou náhodou lepší ty normální uvozovky? :-D
28.1.2012 16:15 Kit
Rozbalit Rozbalit vše Re: problém s proměnnýma v bashi a sedu
Asi myslel tohle:
sed 's/dbname='"${stara_db}"'/dbname='"${nova_db}"'/g;'
Funguje to, ale přehlednost tomu přece jen chybí.

BTW: Někdy si říkám, že vytváření náhledů komentářů je kdekomu pro srandu. Je tady proto, abychom před odesláním viděli, jak bude příspěvek vypadat a případně ho i opravili.

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.