2016-10-12 4 views
0

У меня есть некоторые проблемы с моим скриптом bash. Конец моего файла не работает, но все команды работают вне файла. У меня две строки в качестве аргумента $ 1 и $ 2. $ acl_line и $ usebackend_line - это цифры, и они хороши.Bash script - Некоторые команды не работают в файле sh

Вот мой конец файл:

sed -i "$((acl_line+1))i \ \tacl\t\t is_$2_$1\t\thdr_com(host)\t-i $2.$1" /my_doc/haproxy/haproxy.cfg 
sed -i "$((usebackend_line+1))i \ \tuse_backend\t$2_$1\tif is_$2_$1" /my_doc/haproxy/haproxy.cfg 
echo -en "\nbackend $2_$1\n\tserver $2_$1 163.172.167.52:$3 maxconn 1024" >> /my_doc/haproxy/haproxy.cfg 

cp -r "./model/*" "./script/lp_domains/$1/$2/" 
sed -i 's/lp_ports/$ports/g' "./script/lp_domains/$1/$2/my_doc.yml" 
sed -i 's/lp_name/$2-$1/g' "./script/lp_domains/$1/$2/my_doc.yml" 

Спасибо за вашу anwsers :)

+0

в последних двух командах sed, '$ ports' и' $ 2- $ 1' должны быть заменены как bash-переменные или '$' на самом деле является частью строки замены? – Sundeep

ответ

1

Если $1 и $2 должны быть интерполированы, вы не можете использовать одиночные кавычки.

Кроме того, копирование файла, а затем запуск sed -i на нем является расточительным и подверженным ошибкам. Просто запустите sed и выполните ваши замены в одно и то же время.

sed -i -e "$((acl_line+1))i \ \tacl\t\t is_$2_$1\t\thdr_com(host)\t-i $2.$1" \ 
    -e "$((usebackend_line+1))i \ \tuse_backend\t$2_$1\tif is_$2_$1" /my_doc/haproxy/haproxy.cfg \ 
    -e "\$a\ 
backend $2_$1\n\tserver $2_$1 163.172.167.52:$3 maxconn 1024" /my_doc/haproxy/haproxy.cfg 

# remove ./model/my_doc.yml; instead have a template ./my_doc.yml.in 
cp -r "./model/*" "./script/lp_domains/$1/$2/" 
sed -e "s/lp_ports/$ports/g" -e "s/lp_name/$2-$1/g" \ 
    my_doc.yml.in >"./script/lp_domains/$1/$2/my_doc.yml" 

(Вы должны, вероятно, сделать что-то подобное с haproxy.cfg.in на самом деле.)

0

Я установил мои ошибки. Это были просто ошибки разрешений, Sed создать несколько временных файлов, поэтому я добавляю разрешения для своего пользователя. Спасибо за вашу помощь !

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