2015-07-29 4 views
0

У меня есть переменные $ subs и bbb.Использование sed не может заменить текст в файле содержимым переменной

$ сабвуферы содержимое переменной:

echo $subs 
http://somesite21.something.com:8088/premier-esb-emulator-app/services/es bServiceStub 

содержимое файла ВВВ:

BBBBbbbAAAAA 

Команда, которую я пытаюсь использовать:

sed "s|bb|${subs}|" bbbb 

Но это не работа, выход ошибки:

sed: -e expression #1, char 85: unterminated `s' command 

Просьба сообщить. Заранее спасибо!

+0

Что '-p декларировать выход subs'? –

+0

declare -p subs declare - subs = "http://somesite21.something.com:8088/premier-esb-emulator-app/services/es bServiceStub" – Gleb

+0

Поместите его в сообщение (вместо 'echo 'output, если вы хотите) и убедитесь, что форматирование правильное. –

ответ

0

Ниже мой сценарий:

#!/bin/bash 

set -x 

subs="http://somesite21.something.com:8088/premier-esb-emulator-app/services/es bServiceStub" 

sed "s|bb|${subs}|" bbb 

Это как БББ файл выглядит следующим образом:

BBBBbbbAAAAA 

и здесь есть выход:

enter image description here

Я знаю, это плохой ответ, но, похоже, он работает для меня.

__UPDATE__

Давайте посмотрим, если я вас правильно:

  • Если предположить, что рабочая среда является Unix-подобных
  • Дженкинс устанавливает переменную, а именно подводные лодки. Я предположил, что это экспортированный var
  • Вам нужно заменить часть файла, называемую bbb.
  • Замена будет одной строкой кода.

Таким образом, это все еще работает для меня: enter image description here

ли я что-то отсутствует?

__UPDATE_II__

Я думаю, что я нашел эту проблему в вашем случае: как вы установите переменную ENV. Посмотрите на мой консольный вывод ниже и обратите особое внимание на то, как я устанавливаю subs var из файла output.txt. Он работает так, как я сделал это, чтобы он тоже работал на вашей стороне.

console: reading subs from output.txt

Я решил тоже добавить команды здесь для вашего удобства:

cat output.txt 
export subs=`cat output.txt` 
echo ${subs} 
sed "s|bb|${subs}|" bbb 

Будем надеяться, на этот раз он будет работать для вас =]

+0

Спасибо за ответ, но это не то, что я ищу, хотя он работает. – Gleb

+0

Тогда я не понимаю, о чем вы просите. Не могли бы вы уточнить свой вопрос, пожалуйста. – Alp

+0

Мне нужно подставить часть текста в файле bbb с содержимым подсистемы. subs будет генерироваться автоматически с использованием задания Jenkins. Таким образом, замена должна быть одним строковым кодом. Я чист? – Gleb

Смежные вопросы