2015-02-19 2 views
0

Я пытаюсь заменить 10-ю строку моего Gruntfile.js строками, извлеченными из finaltest.txt на каждой итерации цикла. Однако после следующего кода, что происходит в моей Gruntfile.js, 10-я строка заменяется на строку $x и НЕ значение, которое оно содержит. Вот мой код:Как использовать результат команды в другой команде в bash?

#!/bin/bash 

for i in {1..354} 
do 
    x=`sed -n '$ip' finaltest.txt` 
    sed -i '10s/.*/$x/' Gruntfile.js 
    grunt 

done 

Кроме того, grunt команды для запуска Gruntfile.js. Что я здесь делаю неправильно?

EDIT: проблема $ x была решена в ответе ниже, sed -i "10s~.*~$x~" Gruntfile.js.

Однако, единственная часть слева - это строки 1,2,3,4 и т. Д., Такие как 1p,2p,3p,4p,etc из finaltest.txt, чтобы заменить 10-ю строку Gruntfile.js. Но

x=`sed -n '$ip' finaltest.txt 

не работает должным образом за $ я, он дает ошибку. Я также пробовал "$(i)p", но все равно ничего. Что мне следует изменить?

+1

Используйте двойные кавычки: 'SED -i«10s /.*/$ х»Gruntfile.js' – anubhava

+0

Не помогает. говорит 'sed: -e выражение # 1, char 11: неизвестный параметр to' 's ' ' – HackCode

+0

@kaushaya: выводит ли 'x' какой-либо косой чертой? –

ответ

1

Используйте эту команду СЕПГ:

  • Используйте двойные кавычки для оболочки, чтобы позволить расширение $x
  • Использовать альтернативный регулярок разделитель ~ потому, что ваше значение $x содержит / в нем.

EDIT: Основываясь на отредактированном вопрос. Ваша первая часть также должна быть в двойных кавычках здесь:

x=$(sed "$iq;d" finaltest.txt) 
+0

Спасибо, эта часть сработала! Посмотрите на команду, хранящуюся в x. Я хочу, чтобы каждая строка была заменена как $ 1p, $ 2p и т. Д., И я написал ее как & ip, но вывод - это просто p. Как его решить? – HackCode

+0

Пожалуйста, посмотрите мое новое редактирование. – HackCode

+0

ОК, пожалуйста, дайте мне знать, как только вы получите представление. – HackCode

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