bash heredoc 在粘贴到 ssh 终端时(随机)损坏
bash heredoc gets corrupted(randomly) when pasted to ssh terminal
我使用 ssh 连接到很多 Linux 服务器,每个服务器上 运行 一个健康检查脚本,希望在这样做时为每个服务器节省 2 秒。
所以不是通常创建脚本文件:
cat > test.sh
+
right-click paste(whole script file -copied from notepad)
+
ctrl+c
我右键单击粘贴:这里是包含整个脚本的文档(复制的形式记事本):
cat <<'EOF' > test.sh
#!/bin/bash
commands..
commands..
EOF
像这样粘贴时,内部脚本大约有 50% 次损坏。
损坏随机发生 line/lines(部分行丢失,某些字符丢失等),当脚本为 运行 时导致语法错误,其他 50% 次脚本粘贴正常并且可以 运行 好的。
问题绝对不在脚本本身。
当以 cat > filename 方式复制时,它可以 100% 工作。
从中复制文本的记事本使用 UNIX - LF EOL conv。但是当切换到 windows CRLF 类型时也会发生这种情况。
脚本内部没有制表符,只有空格,而且 limitString 本身之前没有前导空格
脚本长 430 行,这会是个问题吗?
我在其他一些 bash 脚本中或直接在终端中使用相同的语法已有一段时间,但从未遇到过这种行为。
有人知道是什么原因造成的吗?或者可能的解决方法?
按照建议尝试here
ssh remoteuser@ip.address.of.server 'bash -s' < scriptfile.sh
我使用 ssh 连接到很多 Linux 服务器,每个服务器上 运行 一个健康检查脚本,希望在这样做时为每个服务器节省 2 秒。 所以不是通常创建脚本文件:
cat > test.sh
+
right-click paste(whole script file -copied from notepad)
+
ctrl+c
我右键单击粘贴:这里是包含整个脚本的文档(复制的形式记事本):
cat <<'EOF' > test.sh
#!/bin/bash
commands..
commands..
EOF
像这样粘贴时,内部脚本大约有 50% 次损坏。 损坏随机发生 line/lines(部分行丢失,某些字符丢失等),当脚本为 运行 时导致语法错误,其他 50% 次脚本粘贴正常并且可以 运行 好的。
问题绝对不在脚本本身。 当以 cat > filename 方式复制时,它可以 100% 工作。 从中复制文本的记事本使用 UNIX - LF EOL conv。但是当切换到 windows CRLF 类型时也会发生这种情况。 脚本内部没有制表符,只有空格,而且 limitString 本身之前没有前导空格
脚本长 430 行,这会是个问题吗? 我在其他一些 bash 脚本中或直接在终端中使用相同的语法已有一段时间,但从未遇到过这种行为。
有人知道是什么原因造成的吗?或者可能的解决方法?
按照建议尝试here
ssh remoteuser@ip.address.of.server 'bash -s' < scriptfile.sh