当粘贴到ssh终端时,bash-heredoc会损坏(随机)。

bash heredoc gets corrupted(randomly) when pasted to ssh terminal

本问题已经有最佳答案,请猛点这里访问。

我用ssh连接到很多Linux服务器,在每台服务器上运行一个健康检查脚本,这样做的时候,我想为每台服务器节省2秒的时间。因此,不是通常创建脚本文件:

1
2
3
4
5
cat > test.sh
+
right-click paste(whole script file -copied from notepad)
+
ctrl+c

我右键单击粘贴:这里是带整个脚本的文档(复制的表单记事本):

1
2
3
4
5
cat <<'EOF' > test.sh
#!/bin/bash
commands..
commands..
EOF

大约50%的时间内的脚本被损坏时,这样粘贴。随机行/行(部分行丢失,某些字符丢失等)发生损坏,这导致脚本运行时出现语法错误,其他50%的时间脚本粘贴正常,可以正常运行。

问题肯定不在脚本本身。当它被复制cat>filename方式时,它可以100%工作。从中复制文本的记事本使用unix-lf eol conv。但切换到windows crlf类型时也会发生这种情况。脚本内部没有制表符,只有空格也有限制字符串之前没有前导空格

脚本有430行长,这可能是个问题吗?我在其他一些bash脚本中或直接在终端中使用相同的语法已有一段时间了,但从未经历过这样的行为。

有人知道这可能是什么原因吗?或者可能的解决方法?


按照这里的建议尝试

1
ssh remoteuser@ip.address.of.server 'bash -s' < scriptfile.sh