如何纠正 Expect/Tcl 脚本中交互式输出的编码?

问题描述 投票:0回答:1

我正在编写一个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

文档:

linux character-encoding tcl expect
1个回答
0
投票

expect
为换行符添加回车符,以删除回车符:

LC_ALL=C expect <<'EOF' | perl -pe 's/\r\n/\n/' | hexdump -C
spawn -noecho bash -c "echo -e '\\x80'"
interact
EOF
© www.soinside.com 2019 - 2024. All rights reserved.