38 lines
474 B
Bash
38 lines
474 B
Bash
|
#!/bin/bash
|
||
|
#
|
||
|
# Mini expect(1) clone that doesn't mangle \r into \n.
|
||
|
#
|
||
|
|
||
|
EXPECT_IN=0
|
||
|
EXPECT_OUT=1
|
||
|
|
||
|
spawn() {
|
||
|
coproc "$@"
|
||
|
EXPECT_IN=${COPROC[0]}
|
||
|
EXPECT_OUT=${COPROC[1]}
|
||
|
}
|
||
|
|
||
|
expect() {
|
||
|
local expect_str="$1"
|
||
|
while read -r line <&${EXPECT_IN} ; do
|
||
|
echo "$line"
|
||
|
if [[ $line =~ $expect_str ]] ; then
|
||
|
return
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
send() {
|
||
|
echo -n "$@"
|
||
|
echo -n "$@" >&${EXPECT_OUT}
|
||
|
}
|
||
|
|
||
|
send_pipe() {
|
||
|
local buffer="$(cat)"
|
||
|
send "$buffer"
|
||
|
}
|
||
|
|
||
|
interact() {
|
||
|
cat >&${EXPECT_OUT}
|
||
|
}
|