-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathmulti-spawn.sh
executable file
·44 lines (33 loc) · 1.09 KB
/
multi-spawn.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/env bash
bashexp() { sexpect -s /tmp/sexpect-bash-$$.sock "$@"; }
pythexp() { sexpect -s /tmp/sexpect-pyth-$$.sock "$@"; }
ps1bash='bash-[0-9.]+[$#] $'
ps1pyth='>>> '
export PYTHONSTARTUP=/dev/null
bashexp spawn bash --norc
pythexp spawn python3
bashexp expect -re "$ps1bash"; echo
pythexp expect -re "$ps1pyth"; echo
sum=0
for ((i = 1; i <= 10; ++i)); do
if ((i % 2)); then # bash to add odd numbers
bashexp expect -lookback 1
bashexp send -enter "echo sum=\$(($sum + $i))"
bashexp expect -re 'sum=([0-9]+)'
sum=$( bashexp expect_out -i 1 )
bashexp expect -re "$ps1bash"; echo
else # python to add even numbers
pythexp expect -lookback 1
pythexp send -enter "print('sum=%d' % ($sum + $i))"
pythexp expect -re 'sum=([0-9]+)'
sum=$( pythexp out -i 1 )
pythexp expect -re "$ps1pyth"; echo
fi
done
bashexp expect -lookback 1
bashexp send -enter 'exit # Bash exiting ...'
bashexp wait
pythexp expect -lookback 1
pythexp send -enter 'exit() # Python exiting ...'
pythexp wait
echo "---- Final sum: $sum ----"