Я пытаюсь создать файлы профиля .remmina для каждого из моих серверов в соответствии с моим/etc/hosts, я написал следующий скрипт, но моя проблема в том, что в результате команды sed, где я ожидал увидеть значение переменной $hostname
вместо этого я вижу слово $ hostname, как это можно сделать правильно?Как использовать переменную в выходе sed?
#!/bin/bash
num=100
for srv in `cat ~/srv.lst`;
do cp 1.remmina $num.remmina
hostname=grep $srv /etc/hosts | awk -F" " '{print $2}'
sed -i 's/name=amavm4/name=$hostname/g' ~/.remmina/$num.remmina
sed -i 's/server=amavm4:5906/server=$hostname:5906/g' ~/.remmina/$num.remmina
num=$((num+1))
done
Таким образом, после ваших ответов, я отредактировал сценарий выглядеть так:
#!/bin/bash
num=1392344753668
for srv in `cat ~/srv.lst`;
do cp 1.remmina $num.remmina
hostname=`grep $srv /etc/hosts | awk -F" " '{print $2}'`
sed -i 's/name=amadw1/name='$hostname'/g' ~/.remmina/$num.remmina
sed -i 's/server=amadw1:5906/server='$hostname':5906/g' ~/.remmina/$num.remmina
num=$((num+1))
done
Но тогда, когда я запускаю его я получаю следующие ошибки:
[email protected]:~/.remmina$ ./rem_add_srv
sed: -e expression #1, char 26: unterminated `s' command
sed: -e expression #1, char 35: unterminated `s' command
sed: -e expression #1, char 26: unterminated `s' command
sed: -e expression #1, char 35: unterminated `s' command
sed: -e expression #1, char 31: unterminated `s' command
sed: -e expression #1, char 40: unterminated `s' command
sed: -e expression #1, char 25: unterminated `s' command
sed: -e expression #1, char 34: unterminated `s' command
sed: -e expression #1, char 22: unterminated `s' command
sed: -e expression #1, char 31: unterminated `s' command
sed: -e expression #1, char 26: unterminated `s' command
sed: -e expression #1, char 35: unterminated `s' command
sed: -e expression #1, char 26: unterminated `s' command
sed: -e expression #1, char 35: unterminated `s' command
sed: -e expression #1, char 26: unterminated `s' command
sed: -e expression #1, char 35: unterminated `s' command
sed: -e expression #1, char 28: unterminated `s' command
sed: -e expression #1, char 37: unterminated `s' command
sed: -e expression #1, char 24: unterminated `s' command
sed: -e expression #1, char 33: unterminated `s' command
sed: -e expression #1, char 26: unterminated `s' command
sed: -e expression #1, char 35: unterminated `s' command
sed: -e expression #1, char 25: unterminated `s' command
sed: -e expression #1, char 34: unterminated `s' command
[email protected]:~/.remmina$
It похоже, я получаю только 20 ошибок, в то время как скрипт создает до 87 файлов, почему я получаю эту ошибку?
Это __FAQ__. Используйте __double quotes__. – devnull
Помимо использования двойных кавычек, вы также можете сделать это так: 'sed -i 's/name = amavm4/name =' $ hostname '/ g'' – ray
Просто замените одинарные кавычки двойными кавычками в командах' sed' в вашем исходный код (тот, с которого вы начали). – devnull