The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Bash script и вставка из файла"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Bash script и вставка из файла"  
Сообщение от trekaton on 12-Мрт-08, 09:47 
Добрый день всем,

есть утилитка: ./util -f - file.txt -s data1 -u pass

file.txt содержит несколько строк, что-то типа:

TEXT aaaa:data@domain.com
TEXT1: aaa:data1@domain1.com
TEXT2: <aaa:data@domain1.com>

что нужно: сделать скрипт который будет выполнять утилиту каждые 30 секунд, вставляя каждый раз другие значения data1 (который он берёт из другого файла).

У меня получился скрипт подобного вида:

#!/bin/sh

data=123

input=`printf "TEXT aaaa:$data@domain.com
TEXT1: aaa:$data1@domain1.com
TEXT2: <aaa:$data@domain1.com>"`

cat $1 | while read data1;
do
/sbin/util -f $input -s data1 -u pass
sleep 30
done

а также есть файл exp_data1 который содержит
1234
1233
3421

./script.sh exp_data1 естественно не работает :)

То есть я хочу чтоб утилитка читала данные data не из файла, а из скрипта и правильно подменяла...
Есть сомнения нсчёт применения printfб но при поиске наткнулся на него... Подскажите как правильно сделать.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Bash script и вставка из файла"  
Сообщение от phpcoder email(??) on 12-Мрт-08, 10:03 
>Добрый день всем,
>
>есть утилитка: ./util -f - file.txt -s data1 -u pass

После опции -f дефис поставлен случайно? Потому что если нет, то значит читаться будут данные не из файла, а из stdin.


[...]
>input=`printf "TEXT aaaa:$data@domain.com
>TEXT1: aaa:$data1@domain1.com
>TEXT2: <aaa:$data@domain1.com>"`

Вы всё-таки man printf(1) гляньте :)

input=`printf "TEXT aaaa:%s@domain.com\nTEXT1: aaa:%s@domain1.com\nTEXT2: <aaa:%s@domain1.com>\n" "$data" "$data1" "$data"`


>cat $1 | while read data1;
>do
>/sbin/util -f $input -s data1 -u pass

Вместо data1 нужно было написАть $data1, как минимум.
>sleep 30
>done

Если ваша программа util может читать не из файла, а со стандартного ввода, то можно сделать так:

while read data1; do
printf "TEXT aaaa:%s@domain.com\nTEXT1: aaa:%s@domain1.com\nTEXT2: <aaa:%s@domain1.com>\n" \
"$data" \
"$data1" \
"$data" |
/sbin/util -f - -s "$data1" -u pass
sleep 30
done < "$1"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Bash script и вставка из файла"  
Сообщение от trekaton on 13-Мрт-08, 09:45 

>[оверквотинг удален]
>ввода, то можно сделать так:
>
>while read data1; do
>printf "TEXT aaaa:%s@domain.com\nTEXT1: aaa:%s@domain1.com\nTEXT2: <aaa:%s@domain1.com>\n" \
> "$data" \
> "$data1" \
> "$data" |
>/sbin/util -f - -s "$data1" -u pass
>sleep 30
>done < "$1"

По заявлению разработчиков, она читает из stdin. Забыл упомянуть что перед "/sbin/util -f - -s "$data1" -u pass" выполняется ещё один процес "/sbin/util -U "$data", поэтому получаеться что-то вроде:
while read data1; do
/sbin/util -U "$data1"
printf "TEXT aaaa:%s@domain.com\nTEXT1: aaa:%s@domain1.com\nTEXT2: <aaa:%s@domain1.com>\n" \
"$data" \
"$data1" \
"$data" |
sbin/util -f - -s "$data1" -u pass
sleep 30
done < "$1"

Но всё равно, в основном всё работает, спасибо... Тут ещё маленькие трабла, но тут кажется дело в самой утиилитке...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Bash script и вставка из файла"  
Сообщение от phpcoder email(??) on 13-Мрт-08, 09:51 
[...]
>Но всё равно, в основном всё работает, спасибо...

Рад, что смог вам быть полезен :-)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Bash script и вставка из файла"  
Сообщение от trekaton on 13-Мрт-08, 10:01 
>[...]
>>Но всё равно, в основном всё работает, спасибо...
>
>Рад, что смог вам быть полезен :-)

Ещё маленький вопросик, я писал что в цикле, выполняется ещё одна команда перед принтф, это никак не влияет на пайп?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Bash script и вставка из файла"  
Сообщение от phpcoder email(??) on 13-Мрт-08, 10:04 
>>[...]
>Ещё маленький вопросик, я писал что в цикле, выполняется ещё одна команда
>перед принтф, это никак не влияет на пайп?

Не должно.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру