我正在编写一个脚本,其中包括将连接字符串传递给 socat。
当我将其粘贴到命令行中时,效果很好,但是当我打开文件并将其粘贴到那里(pico filename.sh
)时,字符将转换为其他内容,并且连接字符串失败。
有问题的代码是:
conTest=$(echo -e -n "@\0\0'{abcde\0fghij\0Ç\x01Ó|" | socat STDIO tcp4:127.0.0.1:12345)
有问题的角色是:
0Ç\x01Ó
其转换为:
0�\x01�
有没有办法阻止他们转变?
我正在使用 Windows 7 PC 上的 putty (ssh) 连接到这台计算机 (Debian)。
我的初始文本位于我的 Windows PC 上的 notepad++ 文件中。然后,我将其从那里复制/粘贴到我的 Debian 服务器上的命令行中。当我运行这个时,它工作正常。
如果我使用 pico 打开文件pico test1.sh
并复制/粘贴文本,那么它似乎没问题。但一旦我尝试保存它(ctrl-O),字符就会改变。
如果我然后运行file test1.sh
它会说test1.sh: Bourne-Again shell script, ISO-8859 text executable
.
如果我运行iconv -f ASCII -t UTF-8 test1.sh
我就会得到illegal input sequence at position 263
哪个是Ç
角色。
如果我尝试使用 nano,nano test2.sh
则复制/粘贴将不起作用,并且我会在问题字符后得到其他字符。再次,当我尝试保存它时,同样的情况发生(字符发生变化)。
接下来我尝试使用 sftp 复制文件。我将其复制为 test3.sh,然后在服务器上使用 vi 打开它vi test3.sh
。这表明了同样的问题问题字符被替换。
然而,跑步file test3.sh
给了我test3.sh: Bourne-Again shell script, UTF-8 Unicode text executable
我通过sftp将文件复制回来,并在我的windows电脑上打开它,字符都很好,表明sftp进程没有问题。