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 |