Я бы хотел сделать что-то вроде следующего.Используйте sed, чтобы манипулировать потоком cat в другой файл, затем как-то проверить этот новый файл, например подсчитать количество строк, и, если новый файл действителен, заменить новый файл на /etc/resolv.conf.
Couldбыть примерно таким:
cat /etc/resolv.conf | sed "s/.*nameserver.*/nameserver 192.168.1.5/" > /etc/resolv.conf.sed;
if [ "$(wc -l /etc/resolv.conf.sed)" -eq "0" ]; then
rm /etc/resolv.conf.sed;
fi;
if [ -e /etc/resolv.conf.sed ]; then
mv /etc/resolv.conf.sed /etc/resolv.conf
fi;
Только последняя строка, попробуйте сначала подсчитать строки, используйте head для печати всех строк, кроме одной, в выходной файл и используйте tail для печати последней строки, выполните sedманипулирование и добавление к выходному файлу, например:
I=$(wc -l /etc/resolv.conf | cut -d\/ -f1);
N=$[I-1];
head -n$N /etc/resolv.conf > /etc/resolv.conf.sed
tail -n1 /etc/resolv.conf | sed "s/.*nameserver.*/nameserver 192.168.1.5/" >> /etc/resolv.conf.sed;
if [ "$(wc -l /etc/resolv.conf.sed)" -eq "$I" ]; then
rm /etc/resolv.conf.sed;
fi;
if [ -e /etc/resolv.conf.sed ]; then
mv /etc/resolv.conf.sed /etc/resolv.conf
fi;