Официальный сайт студ.городка НГТУ
Software » знатокам bash. HELP! 

#1  19.09.06 15:19

sav
Профиль

знатокам bash. HELP!

если ошибся с форумом, заранее ссори.
мне кажется эта тема и сюда относится и в программинг.

есть файл - tempfile:
str1 fst
str2 gtre

В командной строке вызвав: cat tempfile | grep "str2" | awk '{print $2}'
я получу:
gtre

все работает нормально.
тоже самое пишу в скрипте:
#!/bin/bash
$str=$( cat tempfile )
strtotal=$( /bin/cat $str | \
                  /bin/grep "str2" |  \
                  /bin/awk '{print $2}')
echo $strtotal

я получаю:
fst
никак не пойму почему в первом случае идет поиск str2 и затем awk считает своим 2 параметром gtre
а в скрипте - fst.

и плииз поясните разнице между cat и echo..
я до конца ее не осязаю, но видимо загвоздка где то здесь кроется

Исправлено sav (19.09.06 15:22)

Offline

#2  20.09.06 22:33

Re: знатокам bash. HELP!

Я бы написал вот так в скрипте:
#!/bin/bash
strtotal=`cat tempfile | grep "str2" | awk '{print $2}'`
echo $strtotal

Offline

#3  25.09.06 19:28

sav
Профиль

Re: знатокам bash. HELP!

короче тут фишка..
я уже понял, и видимо всем рекомендую,
чтобы не было головных болей, переменную в кавычки ставить:
echo "$strtotal"
когда содержимое файла я считываю в переменную и  потом регулярно к ней оращаюсь то  работает лишь закавыенная переменная.
т.е. в предыдущем примере, допустим
strone=`cat tempfile ` # лучше strone=$( cat tempfile )
strtotal=$( echo "$strone" | grep "str2" | awk '{ print $2}' )

Offline

Software » знатокам bash. HELP! 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.065 сек.
Выполнено 14 запросов.