2015-04-22 3 views
0

Я использую «СЕПГ -i„s/оригинальный/новый/г“$ гг» в сценарии, но когда на терминале, используя параметр, когда я пишу ./test эхо-печать, то появляется сообщение об ошибке:как отправить параметр в скрипт для «sed»?

sed : no input files 

вот моя попытка:

имя

FIle: тест

#!/bin/bash 
sed -i 's/$original/$new/g' $gg 

Г.Г. файл:

#!/bin/bash 
ns="ns1.cyberciti.biz ns2.cyberciti.biz ns3.cyberciti.biz" 
OIFS="$IFS" 
IFS=' ' 
read -a dnsservers <<< "${ns}" 
IFS="$OIFS" 
echo ${dnsservers[1]} 

ответ

1

Когда gg является именем файла, не используйте $ gg, а gg. Когда имя файла хранится в вар гг, а переменная экспортируется, протестировать его с

echo "File gg=${gg}" 

перед вашей SED команды.

Когда вы добавляете строку set -x, вы увидите, что переменные оригинальные и новые не заменяются. Это вызвано одиночными кавычками, вы должны закончить одинарную кавычку, дать var в двойных кавычках и начать с одной цитатой снова. Этот метод для обоих варов.
СЕПГ линия станет

sed -i 's/'"$original"'/'"$new"'/g' gg 

Дополнительно можно поставить фигурные скобки вокруг Варс:

sed -i 's/'"${original}"'/'"${new}"'/g' gg 
+0

извините за поздний ответ я был в классной комнате. Я получаю эту ошибку: sed: -e выражение # 1, char 0: нет предыдущего регулярного выражения –

+0

ok Спасибо, я разрешил ошибку. –

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