The OpenNET Project / Index page

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

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

"bash: проблемы с read в условиях."  +/
Сообщение от nonamed (ok) on 22-Дек-10, 07:29 
При запуске скрипта команда read пропускается и я не могу ввести необходимые параметры. Как это исправить?

#!/bin/bash
cat serv|while read -s line
do if ping -q -c 2 $line
  then
   echo $line " enabled!" #после успешного пинга выводится это сообщение и начинается следующий пинг
#Все запросы read идущие ниже просто игнорируются
   read -p "login: " username
   read -p "password: " password
   read -p "Type of file: " TYPE_FILE
fi
done

Ответить | Правка | Cообщить модератору

Оглавление

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


1. "bash: проблемы с read в условиях."  +/
Сообщение от ImPressed (ok) on 22-Дек-10, 08:44 
>[оверквотинг удален]
>   then
>    echo $line " enabled!" #после успешного пинга выводится это
> сообщение и начинается следующий пинг
> #Все запросы read идущие ниже просто игнорируются
>    read -p "login: " username
>    read -p "password: " password
>    read -p "Type of file: " TYPE_FILE
> fi
> done
>

Попробуйте сделать следующим образом:

 
#!/bin/bash
for line in `cat serv`;
do
   if ping -q -c 2 $line
   then
    echo $line " enabled!" #после успешного пинга выводится это
сообщение и начинается следующий пинг
#Все запросы read идущие ниже просто игнорируются
    read -p "login: " username
    read -p "password: " password
    read -p "Type of file: " TYPE_FILE
fi
done


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "bash: проблемы с read в условиях."  +/
Сообщение от Aquarius (ok) on 27-Дек-10, 16:21 
>[оверквотинг удален]
> do if ping -q -c 2 $line
>    then
>     echo $line " enabled!" #после успешного пинга выводится это
> сообщение и начинается следующий пинг
> #Все запросы read идущие ниже просто игнорируются
>     read -p "login: " username
>     read -p "password: " password
>     read -p "Type of file: " TYPE_FILE
> fi
> done < serv

IMHO, те же, с того же боку (синтаксис только другой и нет лишнего cat'а)

P.S. Прошу прощения, это ответ на #2

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

2. "bash: проблемы с read в условиях."  +/
Сообщение от ACCA (ok) on 23-Дек-10, 05:24 
#!/bin/bash
while read -s line
do if ping -q -c 2 $line
   then
    echo $line " enabled!" #после успешного пинга выводится это
сообщение и начинается следующий пинг
#Все запросы read идущие ниже просто игнорируются
    read -p "login: " username
    read -p "password: " password
    read -p "Type of file: " TYPE_FILE
fi
done < serv
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "bash: проблемы с read в условиях."  +/
Сообщение от Aquarius (ok) on 27-Дек-10, 16:24 
>[оверквотинг удален]
>    then
>     echo $line " enabled!" #после успешного пинга выводится
> это
>  сообщение и начинается следующий пинг
>  #Все запросы read идущие ниже просто игнорируются
>     read -p "login: " username
>     read -p "password: " password
>     read -p "Type of file: " TYPE_FILE
>  fi
> done < serv

IMHO, то же самое, с того же боку (синтаксис только другой и нет лишнего cat'а)
а вот #1 - выход

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

3. "bash: проблемы с read в условиях."  +/
Сообщение от pavlinux (ok) on 27-Дек-10, 14:58 
>[оверквотинг удален]
>   then
>    echo $line " enabled!" #после успешного пинга выводится это
> сообщение и начинается следующий пинг
> #Все запросы read идущие ниже просто игнорируются
>    read -p "login: " username
>    read -p "password: " password
>    read -p "Type of file: " TYPE_FILE
> fi
> done
>

 
#!/bin/bash

while read -s line
     do
       if ping -q -c 2 $line
         then
             echo $line " enabled!"

             read -p "login: " username
             read -p "password: " password
             read -p "Type of file: " TYPE_FILE
       fi
done < serv

Без содержимого serv и смысла скрипта претензии не принимаются :)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "bash: проблемы с read в условиях."  +/
Сообщение от Aquarius (ok) on 27-Дек-10, 16:25 
>[оверквотинг удален]
>            
>  read -p "login: " username
>            
>  read -p "password: " password
>            
>  read -p "Type of file: " TYPE_FILE
>        fi
> done < serv
>
> Без содержимого serv и смысла скрипта претензии не принимаются :)

IMHO, проблема останется, при том, та же, и по той же причине

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "bash: проблемы с read в условиях."  +/
Сообщение от pavlinux (ok) on 27-Дек-10, 16:41 
>[оверквотинг удален]
>>  read -p "login: " username
>>
>>  read -p "password: " password
>>
>>  read -p "Type of file: " TYPE_FILE
>>        fi
>> done < serv
>>
>> Без содержимого serv и смысла скрипта претензии не принимаются :)
> IMHO, проблема останется, при том, та же, и по той же причине

sh -x ./test.sh

pavel@suse64:/tmp> sh -x ./b.sh
+ read -r line
+ ping -q -c 2 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.

--- 192.168.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.739/1.181/1.624/0.443 ms
+ echo 192.168.1.1 ' enabled!'
192.168.1.1  enabled!
+ read -p 'login: ' username
+ read -p 'password: ' password
+ read -p 'Type of file: ' TYPE_FILE
+ read -r line
+ ping -q -c 2 195.34.32.11
PING 195.34.32.11 (195.34.32.11) 56(84) bytes of data.
^C
--- 195.34.32.11 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms


Как видишь, все работает.

Повторюсь - без содержимого serv и смысла скрипта экстрасенсы все в отпусках.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "bash: проблемы с read в условиях."  +/
Сообщение от pavlinux (ok) on 27-Дек-10, 17:02 
>[оверквотинг удален]
>> Без содержимого serv и смысла скрипта претензии не принимаются :)
> IMHO, проблема останется, при том, та же, и по той же причине

В общам, заипался экстрасенсить :)


#!/bin/bash

cat serv | while read -s line
     do
       if ping -q -c 2 $line
         then
             echo $line " enabled!"

             read -p 'login: ' username <&1
             read -p 'password: ' password <&1
             read -p 'Type of file: ' TYPE_FILE <&1
fi
done;


Надеюсь это имелось в виду? Причину поняли?

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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