Это мой простой сценарий оболочкиИспользование СЭД команды в сценарии оболочки
sample.sh
LOCALCONFIGDIR="Install"
CONFLOC="$LOCALCONFIGDIR/server.conf"
echo "Enter Web Url:"
read weburl
echo "sed 's/^\(ServerName\)$/\1 "$weburl"/' "$CONFLOC
sed "'s/^\(ServerName\)$/\1 "$weburl"/' "$CONFLOC
Когда я запускаю этот код, я получаю результат в эхо-команды следующим образом.
sed 's/^\(ServerName\)$/\1 www.weburl.com/' Install/server.conf
Но при выполнении команды sed в следующей строке оно говорит об ошибке ниже.
sed: -e expression #1, char 1: unknown command: `''
Я пробовал команду, произведенную в эхо-заявлении с экрана терминала, работает. Но Line number 5
, не работает из сценария оболочки
Он работает. sed "s% $^\ (ServerName \) $% \ 1 www.weburl.com%" Install/server.conf. Но он не добавляет текст www.weburl.com после ServerName. –
Я просто удалил бродячий '' 'во второй' sed'; если бы вы использовали это, это остановило бы игру. Если это не проблема, возможно, ваш файл конфигурации имеет пробелы до или после «ServerName» в строке конфигурации, или, возможно, в файле нет строки, содержащей только «имя_сервера». –
Возможно, команды sed лучше всего использовать, используя одинарные кавычки и отображая переменные оболочки с двойными кавычками, то есть 'sed 's /.../'" $ {var} "'/' file'. Причина в том, что метасимволы, невольно используемые в команде sed, меня интерполируют оболочкой. – potong