Bash a argument s mezerami

Martin Kraus martin.kraus na infonet.cz
Pondělí Září 12 17:52:33 CEST 2005


> resim problem, kdy mam v shellu (bash) v promenne ulozen prikaz, ktery
> chci proves a tento prikaz bere argumenty, ktere obsahuji mezeru.
> Bohuzel se me nedari zadnou kombinaci uvozovek, apostrofu, ci zpetnych
> lomitek dosahnout toho, aby to fungovalo spravne. Poradi nekdo?
> 
> nefunkci priklad: (mam adresar "p p" [pe mezera pe])
> #!/bin/sh
> 
> LS="ls \"p p\""

no ja bych plynule navazal a zeptal se na nasledujici:

mam promennou ve ktere je neco jako

	'a b "c d"' 

a chtel bych to rozparsovat v cyklu na jednotlive substringy, tedy
abych dostal vysledne:

	a
	b
	c d

urcite by to resil awk/sed, ale dalo by se to udelat ciste v shellu?
for me to nejak escapuje, takze

	for i in a b "c d"; do .......; done

funguje tak jak ma, ale

	a='a b "c d"'

	for i in $a; do ........; done

vytvori:

	a
	b
	"c
	d"

co me uniklo?
diky
mk


Další informace o konferenci Linux