我正在编写一个expect脚本来处理Bash的输入和输出。不幸的是,输出包含不需要的字符(
\xc2
和\x0d
)。我如何使用 Expect/Tcl 避免它们?
$ expect -f <(echo '
spawn -noecho bash -c "echo -e \"\\x80\"";
interact
') | hexdump -C
00000000 c2 80 0d 0a
预期输出:
00000000 80 0a
我尝试了几种替代方案:
# setting LANG=C before running the script, is not an option in my use-case
$ LANG=C expect -f <(echo '
spawn -noecho bash -c "echo -e \"\\x80\"";
interact
') | hexdump -C
00000000 80 0d 0a
$ expect -f <(echo '
fconfigure stdout -encoding "iso8859-1";
spawn -noecho bash -c "echo -e \"\\x80\"";
interact
') | hexdump -C
00000000 c2 80 0d 0a
$ expect -f <(echo '
fconfigure stdout -translation "lf";
spawn -noecho bash -c "echo -e \"\\x80\"";
interact
') | hexdump -C
00000000 c2 80 0d 0a
文档:
expect
为换行符添加回车符,以删除回车符:
LC_ALL=C expect <<'EOF' | perl -pe 's/\r\n/\n/' | hexdump -C
spawn -noecho bash -c "echo -e '\\x80'"
interact
EOF