bash heredoc повреждается (случайно) при вставке в ssh-терминал

Я подключаюсь ко многим серверам Linux с помощью ssh и запускаю скрипт проверки работоспособности на каждом из них, при этом мне хотелось сэкономить 2 секунды на сервере. Поэтому вместо обычного создания файла сценария:

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

Я щелкаю правой кнопкой мыши и вставляю: здесь документ со всем сценарием (скопированная форма блокнота):

cat <<'EOF' > test.sh
#!/bin/bash
commands..
commands..
EOF

Скрипт Aprox 50% раз внутри будет поврежден при вставке следующим образом. Повреждение происходит в случайной строке / строках (отсутствует часть строки, отсутствуют некоторые символы и т. Д.), Что приводит к синтаксическим ошибкам при запуске сценария, в других случаях 50% сценарий вставляется в порядке и может быть запущен в порядке.

Проблема определенно не в самом скрипте. Когда копируется cat > filename, это работает на 100%. Блокнот, из которого копируется текст, использует UNIX - LF EOL conv. но это также происходит при переключении на тип Windows CRLF. Скрипт не имеет вкладок внутри, только пробелы и limitString не имеет перед собой пробела перед собой

Сценарий длиной 430 строк, это может быть проблемой? Я использовал тот же синтаксис в течение некоторого времени в некоторых других скриптах bash или непосредственно в терминале, но никогда не сталкивался с таким поведением.

У кого-нибудь есть идеи, что может быть причиной этого? Или возможный обходной путь?

1 ответ

Решение

Попробуйте как предложено здесь

ssh remoteuser@ip.address.of.server 'bash -s' < scriptfile.sh
Другие вопросы по тегам