Сами двойные кавычки интерпретируют \/
как /
, вам нужно удвоить обратную косую черту, чтобы сохранить экранирование в двойных кавычках.
Если возможно, может быть проще отправить команду на стандартный ввод оболочки:
cat << EOF | ssh 'user@host' sudo -S -u webm sh
sed -i 's/^wrapper.java.additional.50=-agentpath:"\/webmethods\/dynatrace/#wrapper.java.additional.50=-agentpath:"\/webmethods\/dynatrace/g' /webmethods/eg_*/profiles/IS_default/configuration/custom_wrapper.conf
EOF
Кроме того, используйте разные разделители, чтобы избежать необходимости бежать.Вы можете использовать любой символ, которого нет в строках:
sed -i 's%^wrapper.java.additional.50=-agentpath:"/webmethods/dynatrace%#wrapper.java.additional.50=-agentpath:"/webmethods/dynatrace%g'
Также обратите внимание, что .
соответствует любому символу, но вы, вероятно, не хотите совпадать со строками, такими как
wrapperAjavaBadditionalC50=-agentpath:"/webmethods/dynatrace
Используйте \.
или [.]
, чтобы соответствовать буквальной точке.