基于this answer,我试图找出一种从telnet退出并返回0的方法
这些将无法工作:
(echo -e "repl.quit()";sleep 1) |telnet localhost 4242;echo $?
(echo -e "\029";sleep 1;echo "q";sleep 1) |telnet localhost 4242;echo $?
(echo -e "\c]";sleep 1;echo "q";sleep 1) |telnet localhost 4242;echo $?
(echo -e "\e]";sleep 1;echo "q";sleep 1) |telnet localhost 4242;echo $?
(echo -e "\E]";sleep 1;echo "q";sleep 1) |telnet localhost 4242;echo $?
问题是:我无法区分成功退出和失败退出...
我认为this question可以链接。
最佳答案
您需要发送^]
字符,这是不可打印的组分隔符,您的telnet客户端在执行通过管道给它的所有命令后终止连接之前。 echo
程序的大多数版本都可以使用-e
选项产生无法打印的字符。组分隔符是八进制035(您可以在* nix系统上看到带有man 7 ascii
的整个ASCII表。)。因此,整个命令应如下所示:
$ (echo "content.location.href = 'http://v4.ident.me/'"; sleep 2; echo -e '\035'; sleep 2) | telnet localhost 4242 > /dev/null
$ echo $?
$ 0
关于error-handling - 可以使用MozRepl从telnet正常退出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24337292/