impossible d’obtenir les valeurs $ expect_out (buffer) et $ expect_out (0, ssortingng) en shell avec expect

Si je code dans le script shell, je ne parviens pas à obtenir les valeurs de $ expect_out (buffer) et $ expect_out (0, ssortingng).

Vous trouverez ci-dessous les exemples de codes que j’ai codés.

[Linux Dev:upncommn ~]$ cat expshl.sh #!/bin/bash expect << EOF spawn "/home/upncommn/expectecho.sh" expect { "hi" { send_user "You said_hi $expect_out(buffer)\n"; send_user "Sting $expect_out(0,string)\n" exit 1 } "*bd*" { send_user "You said $expect_out(buffer)\n" send_user "Sting $expect_out(0,string)\n" exit 2 } timeout { send_user "timeout\n"; exit 3 } } EOF [Linux Dev:upncommn ~]$ cat expectecho.sh echo "hello" echo "abduls" echo "theos" echo "this is abdul" [Linux Dev:upncommn ~]$ ./expshl.sh spawn /home/upncommn/expectecho.sh hello abduls theos You said (buffer) Sting (0,string) [Linux Dev:upncommn ~]$ echo $? 2 

Aidez-moi à obtenir le $ expect_out (buffer) et $ expect_out (0, ssortingng).

Shell heredocs sont essentiellement de grandes chaînes entre guillemets doubles. Le shell remplace la variable $expect_out (avec une chaîne vide car la session shell n’a pas de variable de ce type) avant que l’ $expect_out ne soit lancée. Vous devez citer le corps de script attendu pour protéger les variables attendues du shell:

 expect << 'EOF' # ........^...^ # everything else is the same 

http://www.gnu.org/software/bash/manual/bashref.html#Here-Documents