2017-01-04 2 views
0

Ich habe in der Erwartete Manpage gesucht und gegoogelt, aber ich habe nicht gefunden, was die -r für erwarten ist. Ich sah diese vor der Verwendung Option wie dieseWas bedeutet "-r" wie im Expect-Befehl "expect -r PATTERN"?

expect -r "\r\n\r\n" 

in einem expect Skript, kann aber nicht herausfinden, was es ist für. Weiß jemand, wo ich nach dieser Antwort suchen kann? Vielen Dank im Voraus

+0

bist du es, dass es '-r' ist, aber nicht' \ r' oder '-re'? – RomanPerekhrest

+1

Bitte fügen Sie den vollständigen Befehl hinzu. – adiesner

+0

Ja, es ist r. Der vollständige Befehl ist 'expect -r' somePattern '' – chromechris

Antwort

5

Dies verwirrte mich auch ein wenig, als ich sah, jemand verwendete expect -regexp PATTERN, weil in der man-Seite erwähnt es nur expect -re PATTERN. Ich habe versucht expect -regexp PATTERN und es funktioniert wirklich.

Irgendwann habe ich erwartet source code heruntergeladen und habe einen Blick und fand den Grund. s Tcl_GetIndexFromObj(interp, objPtr, tablePtr, msg, flags, indexPtr) zu Befehlsoptionen zu analysieren:

Im Quellcode (siehe die Funktion parse_expect_args() in expect.c), die expect 'es nennt Tcl

static char *flags[] = { 
    "-glob", "-regexp", "-exact", "-notransfer", "-nocase", 
    "-i", "-indices", "-iread", "-timestamp", "-timeout", 
    "-nobrace", "--", (char *)0 
} 

dann in der Funktion s Optionen definiert sind tatsächlich wie folgt'. Accordint zu Tcl_GetIndexFromObj() 's manual:

... tritt ein Spiel, wenn objPtr' s String-Wert identisch mit einem der ist die Saiten in tablePtr, oder wenn es eine nicht leer eindeutige Abkürzung ist für genau eine der Zeichenfolgen in tablePtr und die TCL_EXACT Flag wurde nicht angegeben; ...

Hier Expect Anrufe Tcl_GetIndexFromObj() mit flags = 0 (kein TCL_EXACT) so dokumentierten -gl, -re und -ex in der Manpage sind eigentlich -glob, -regexp und -exact sind. Und da gibt es nur eine Option -regexp beginnend mit -r, also -r bedeutet einfach das gleiche wie -regexp (und -re).

Ich persönlich empfehle die dokumentierten Optionen immer noch verwendet werden, um zu vermeiden, andere Menschen zu verwirren.

+0

Wow! Haha, viel graben! Das ist großartig, vielen Dank. – chromechris

Verwandte Themen