commit all archived files

This commit is contained in:
mappu 2015-12-03 10:24:02 +00:00
parent 9d1ee94391
commit 4dcba48c8c
2 changed files with 55 additions and 0 deletions

18
README.md Normal file
View File

@ -0,0 +1,18 @@
# mini-expect
![](https://img.shields.io/badge/written%20in-bash-blue)
An expect(1) clone that doesn't corrupt CR bytes.
I recently attempted to use expect(1) as part of a test suite, but it seems totally incapable of sending 0x13 bytes without corrupting them into 0x10. Maybe it was my terminal mode (but `echo $'\r' | nc` was fine), maybe it was my expect/tcl installation (but the bug was observed on current packages from both Cygwin and Debian), maybe it was easier to reimplement the basic functionality instead of spending any more time on that.
## Usage
`source mini-expect.sh`
Then, use spawn/send/expect/interact commands just like with expect(1).
## Download
- [⬇️ mini-expect.v1.sh](dist-archive/mini-expect.v1.sh) *(474B)*

View File

@ -0,0 +1,37 @@
#!/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}
}