Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: tomaskCZ 15 Července 2008, 11:34:05
-
Zkousim si dle navodu
'http://oreilly.com/catalog/expect/chapter/ch03.html#pgfId-9292'
kapitola 'Anchoring' zachytavat presny vzorec, tzn. jako v prikladu ^hi$, ale ani tento ukazkovy postup se mi nedari.
Tzn. ^(vyraz musi zacinat) nebo $(vyraz musi koncit) mi expect nevyhodnoti spravne, zkousel jsem ruzne kombinace jako
expect "^hi\n"
expect "^hi$\n"
expect "\^hi\$\n"
apod. asi nevim, jak tam ten regularni vyraz spravne napsat s tim enterem \n.
Jak to tam dosadit, aby zachytil pouze presny vyraz hi bez niceho, popr. napriklad zachytil pouze jednu zavorku > a ne dve >> ?
-
..
expect "^hi\n"
expect "^hi$\n" // spatne .. radku vzdy vypada pri pouziti teto direktivy takto, '^..$', ne takto : '^..$.', protoze \n je taky znak
expect "\^hi\$\n" // to same
zkus misto '\n' dat plny konec radku (AFAIK), coz je '\r\n'
Jak to tam dosadit, aby zachytil pouze presny vyraz hi bez niceho, popr. napriklad zachytil pouze jednu zavorku > a ne dve >> ? // nerozumim otazce, uka priklad
ad.1) ja osobne expect nepouzivam .. stejneho efektu lze docilit aka ::
nettezzaumana@kokina:~> python << EOF
> print 1 + 2
> quit()
> EOF
3
-
aha, dik, moje blbost ten $ mel jit za to /n,pak ten ukazkovy priklad funguje, jak ma.
Jde mi presne o komunikaci se starsim zarizenim pres konzoli, tzn. posilam mu prikazy, cekam na zname stringy a podle toho mu poslu dalsi prikaz na prompt, ktery je v tomto pripade >.
Problem je, ze splneni prikazu reportuje neco jako << prikaz splnen >> a az potom prejde do promptu >.
Expect zachyti samozrejme jako prvni >>, spokoji se s tim a prikaz posle predcasne, kdy jeste neni dostupny prompt. Mam to reseno, ze na >> posle jen tak enter a pak pokracuje klasicky uz s promptem, ale systemove by mi prislo cistci, kdyby umel rozeznat >> od >, coz se mi stale nedari aplikovat.
V tomto
expect \"\^>\$\" nebo \"^>$\" to proste nevidi(zustane viset), zkousel jsem precist, co tam vlastne vidi s promennou
send $expect_out(buffer), to mi vrati pouze 'BUFFER'.
Shrnuti, ten ucebnicovi prikaz funguje i s promnenyma, v realu pri komunikaci se zarizenim to drhne, byt si umim poradit urcitym workaroundem, je jasny, pokud nedelas v expectu, ze to do detailu vedet nebudes :)