Начало Вход/Регистрация Помощ Tazi stranica s latinski bukwi
Области
 Новини
 Актуална тема
 Linux портали
 Какво е Линукс?
 Въпроси-отговори
 Форуми
   •Трудова борса
   •Конкурс
 Статии
 Дистрибуции
   •Поръчка на CD
 Made In BG
 Файлове
 Връзки
 Галерия
 Конференции
Настройки
 Външен вид
 Предложения
 Направи си сам
И още ...
 За нас
 Линукс за българи ЕООД
 Линк към нас
 Предложения

Подкрепяно от:
TelePoint - Място за хора със свободни идеи

SiteGround

initLab

Adsys Group

SAP Bulgaria

Въпроси отговори
Въпрос: Въпрос за bash
[Търси: ]

ВНИМАНИЕ: Използвайте форумите на сайта за дa зададете вашите въпроси.

Към началото |Добави въпрос |Отговори
 
Въпрос
От: Question Дата: 06/19/2006
Здравейте,

 от известно време се мъча да сглобя един скрипт, но нещо
 непрекъснато изпускам. Искам примерно да прочета даден файл
 и да взема от него информация, която по-късно да я
 обработвам. Примерно искам да взема DNS-то от resolv.conf и
 след като го получа да мога да променям самото IP. Успях с
 cut -d: -f1 /etc/resolv/conf, но не мога да игнорирам
 string-a, т.е. "namesever". Бих Ви помолил ако може да ме
 насочите, как примерно да взема втората дума от първи ред,
ако е възможно?

Благодаря ви предварително и всичко най-прекрасно от мен.


Отговор #1
От: ... Дата: 06/19/2006
предполагам с regular expresions и grep


Отговор #2
От: slave Дата: 06/19/2006
cut -d ' ' -f 2 /etc/resolv.conf
man cut


Отговор #3
От: Question Дата: 06/19/2006
Здравейте отнова,

 благодаря Ви за съветите и успях да сглобя грубо и от давете
предложения. Ето какво сътвори болната ми главица:
Скрипта
#!/bin bash
DIR=~/test
cp $DIR/resolv.conf $DIR/proba.$$$
awk '{ print }' $DIR/proba.$$$
sleep 1
echo "This is with cut"
cut -d ' ' -f 2 $DIR/proba.$$$
echo " ... now with sed ..."
sleep 2
touch op.$$$
str="nameserver"
sed -e"s/$str//" $DIR/proba.$$$ > $DIR/op.$$$
cat $DIR/op.$$$
rm -r op.$$$ proba.$$$
ls -l $DIR
--------------------------------
Резултата :
~/test$ sh read.sh
search pumatech.com
nameserver 10.17.10.20
nameserver 10.17.10.21
This is with cut
10.17.10.20
10.17.10.21
 ... now with sed ...
 10.17.10.20
 10.17.10.21
total 8
 -rw-r--r--  1 smislov  smislov  315 2006-06-19 15:49
read.sh
-rwxrwxrwx  1 root root  66 2006-06-19 15:08 resolv.conf

 Искам само още нещо да ви попитам. Как мога тези стойности
да ги задам в масив, т.е. 
declare -a array
array[0]=10.17.10.20 #( 1-ят ред от файла)
array[1]=10.17.10.21 #(вторият ред от файла)


Благодаря Ви още веднъж за помоща.


Отговор #4
От: Question Дата: 06/20/2006
Eto go i krainiqt rezultat:
#!/bin bash
DIR=~/test
cp $DIR/resolv.conf $DIR/proba.$$$
awk '{ print }' $DIR/proba.$$$
echo "Changing file"
b=0
 for i in `grep -v ^# $DIR/proba.$$$ | awk '{if($1 ==
"nameserver" && length($2)) print $2}'`;
do
dns[$b]=$i
b=$(($b+1));
done
sleep 2
i=0
while [ $i -lt $b ];do
echo "dns[$i]=${dns[$i]}"
let "i=$i + 1"
done
rm -r proba.*
----------------------
i syotwetno otgowora e :
test$ sh change.sh
nameserver 10.17.10.20
nameserver 10.17.10.21
Changing file
dns[0]=10.17.10.20
dns[1]=10.17.10.21


;)


<< FreeBSD boot проблем (11 ) | Може ли да се направи? (3 ) >>

 
© 2011-... Асоциация "Линукс за българи"
© 2007-2010 Линукс за българи ЕООД
© 1999-2006 Slavej Karadjov
Ако искате да препечатате или цитирате информация от този сайт прочетете първо това
Външния вид е направен от MOMCHE
Code Version: 1.0.8 H (Revision: 23-09-2011)
 
Изпълнението отне: 1 wallclock secs ( 0.08 usr + 0.00 sys = 0.08 CPU)