Команда sed replace внутри скрипта bash? - PullRequest
0 голосов
/ 17 сентября 2009

У меня проблема с заменой команды внутри скрипта, ошибочная строка в скрипте выглядит так:

mail -s "$(hostname) on $(date)"

Его следует заменить на строку, подобную этой:

nail -r "sender@domain.com" -s "Subject" -S smtp=255.255.255.255

Но я не могу заставить sed сделать замену :) Для этой цели я написал небольшой скрипт:

#!/bin/bash

old="mail -s \"\$(hostname) on \$(date)"
new="nail -r \"sender@domain.com\" -s \"Subject\" -S smtp=255.255.255.255"

sed -i 's|$old|$new|' script.sh

У кого-нибудь есть совет?

Ответы [ 3 ]

3 голосов
/ 17 сентября 2009
sed -i "s|$old|$new|" script.sh

Обратите внимание на двойные кавычки.

1 голос
/ 17 сентября 2009

Sed по умолчанию не делает в месте редактирования. Если вы используете gnu Sed, попробуйте указать флаг на месте -ikbak

0 голосов
/ 18 сентября 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...