2012-03-17 4 views
1
pushd tests 
mkdir -p $RPM_BUILD_ROOT%{_bindir} 
for foo in $(make check-programs) ; do 
install -m 0755 .libs/$foo $RPM_BUILD_ROOT%{_bindir} 
done 
popd 

СЕПГ Команда:СЕПГ команда не работает

sed -i '[email protected] foo in $(make check-programs)@for foo in dristat [email protected]' 

о/р:

for foo in dristat drmstat$(make check-programs) ; do 

ожидается:

for foo in dristat drmstat ;do 

Может кто-нибудь сказать мне, что я делаю неправильно?

+3

Невозможно воспроизвести. Убедитесь, что цитирование, которое вы используете, - это тот, который у вас есть в этом сообщении. (Использование '' 'не работает.) – Mat

+0

Я скопировал весь код и o/p's ... его точно так же, как и его опубликованные здесь :-D – mage

+2

Тогда вы должны использовать забавную оболочку - потому что с' bash' , то, что вы опубликовали, работает над файлом, который вы опубликовали, как вы ожидали, но не так, как вы это заметили. –

ответ

2

Re: SED -i 'S @ для обув в $ (сделать контрольно-программ) @for Foo в dristat drmstat @ г'

Я подозреваю, что это не ваш фактический сценарий. У вас были двойные кавычки в реальном случае с любой вероятностью?

# as in: 
sed -i "[email protected] foo in $(make check-programs)@for foo in dristat [email protected]" 

Теперь у вас есть неэкранированные подстановки команды: $(make ...). Предположим, что это выполняется в среде, в которой вы выполняете это задание sed, и не производит никакого вывода. Расширение этого аргумента является то:

[email protected] foo in @for foo in dristat [email protected] 

И что будет производить:

for foo in dristat drmstat$(make check-programs) ; do 
+0

sed -i 's @ for foo in $ (make check-programs) @for foo в dristat drmstat @ g' filename> filename2 он работал, и я получил правильный результат в файле2 ... ну что странно – mage

0

Просьба принять данные в файл file1, а затем использовать эту команду:

cat file1|sed 's/\$\(make check-programs\)//g' 

есть \ между $ и ( и между programs и )

Спасибо.

+0

Пожалуйста, сделайте не делайте этого так: 'sed' может читать файлы, поэтому не должно быть никакого использования' cat' (это называется UUoC - бесполезное использование 'cat'). –

+0

Хорошо Мы можем сделать это без команды кота. – Shirish

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