The OpenNET Project / Index page

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

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

"Непонятный sh"
Сообщение от denb Искать по авторуВ закладки on 18-Май-02, 12:00  (MSK)
Народ помогите!
делаю так:
#!/bin/sh
read z
if [ "$z" = "Y" ]; then
      echo "Yes"
else
      echo "No"
fi
Все время выводит "Yes" и неважно, что ввожу я
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "RE: Непонятный sh"
Сообщение от XMan emailИскать по авторуВ закладки on 18-Май-02, 14:31  (MSK)
По идее должно быть так:

if [ "$z" == "Y" ];

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: Непонятный sh"
Сообщение от Vladislav emailИскать по авторуВ закладки on 18-Май-02, 15:56  (MSK)
>По идее должно быть так:
>
>if [ "$z" == "Y" ];
>
Но это же не C++!!!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: Непонятный sh"
Сообщение от XMan emailИскать по авторуВ закладки on 18-Май-02, 17:38  (MSK)
Ну в bash у меня и оригинал работал нормально :))
Между прочим, "!=" - тоже сишная конструкция :))
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Непонятный sh"
Сообщение от Vladislav emailИскать по авторуВ закладки on 18-Май-02, 15:53  (MSK)
Чудак ты! :)
Не надо проверять сходство строк такими операторами!!!
Это опасно! Надо делать так:
==========================================
# My first shell program
#!/bin/sh
trap "" 2 3 # :) Класная тема, попробуй!!!
echo -n "Select variable : "
read ANS_
test $ANS_
if [ $? != 0 ]; then
exit 1
fi
case $ANS_ in
       y)
         echo 'You put "y"!'
       ;;
       n)
         echo 'You put "n"!'
       ;;
       *)
         echo 'I do not know, what you put!'
       ;;
esac
#
# А вообще набери
man sh
# Либо внимательно рассмотри /etc/rc
# Удачи тебе!
# Будут еще вопросы, пиши мне на мыло
# Snail_Unix@ukr.net
# :)))
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: Непонятный sh"
Сообщение от denb Искать по авторуВ закладки on 18-Май-02, 15:56  (MSK)
Спасибо , помогли!
  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: Ну нагородили !"
Сообщение от Арлекин Искать по авторуВ закладки on 19-Май-02, 11:35  (MSK)
В if надо было что-то одно оставить без апострофов. И все. Кстати: bash наследник sh, но не более того.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "RE: Ну нагородили !"
Сообщение от denb Искать по авторуВ закладки on 24-Май-02, 10:31  (MSK)
>В if надо было что-то одно
>оставить без апострофов. И все.
>Кстати: bash наследник sh, но
>не более того.

Пробовал я так ставить  - не получилось

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "RE: Ну нагородили !"
Сообщение от XMan emailИскать по авторуВ закладки on 24-Май-02, 13:07  (MSK)
Ну вопрошающий не сказал, в какой системе это пишется, а в большинстве линухов делается симлинк /bin/sh на /bin/bash.
А оригинал у меня все равно работал без изменений :))
  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "RE: Непонятный sh"
Сообщение от Арлекин Искать по авторуВ закладки on 28-Май-02, 08:46  (MSK)
08:42:22 @newgoblin:Test >./t.sh
Y
Yes
08:42:29 @newgoblin:Test >./t.sh
N
No
08:42:33 @newgoblin:Test >
Xman прав.
В 6 соляре исходный вариант (без изменений) работает как показано выше. Судя по всему линуксоиды в очередной раз хотели сделать как лучше, а сляпали как в России. Увы.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "RE: Непонятный sh"
Сообщение от denb Искать по авторуВ закладки on 29-Май-02, 10:51  (MSK)
система FreeBSD 4.4 и получилось у меня только с case вариантом

  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "RE: Непонятный sh"
Сообщение от Арлекин Искать по авторуВ закладки on 29-Май-02, 12:28  (MSK)
Будем знать, что у бсдюков тоже рыльце в ...
Хотя case в шеллах есть ни что иное, как операция ==, которая вообще-то валидна в отношении строк с большими допущениями.  И не с проста в джяве, например, операция == по отношению к строкам это не тоже самое, что в отношении скажем int. Строки там в switch в качестве аргумента недопустимы, а гарантированное сравнение строк возможно только через метод...
Лирика, впрочем, все это, обеденный перерыв так сказать.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

30. "RE: Непонятный sh"
Сообщение от J Искать по авторуВ закладки on 02-Июл-02, 15:13  (MSK)
>система FreeBSD 4.4 и получилось у меня только с case вариантом

ну так во freebsd sh это на самом деле ash, у которого свои заморочки.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "RE: Непонятный sh"
Сообщение от XMan emailИскать по авторуВ закладки on 29-Май-02, 14:37  (MSK)
Ну это ты зря :))
Я ж как раз на линухе, причем российском, (ASP Linux 7.2), и проверял :))
  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "RE: Непонятный sh"
Сообщение от Арлекин Искать по авторуВ закладки on 29-Май-02, 15:41  (MSK)
Чего зря ? Не надо мух с котлетами ))
Есть шелл называемый sh. Bourne который. Это своего рода шелл-стандарт для *никсов. Наравне с csh. От него родился bash, ksh и еще куча других. Даже  Х-овый есть. Но это все ДРУГИЕ шеллы. Также как java 1.1 и java 1.2 или С и С++. Ну представь себе софтлинк отправляющий из плюсового С в K&R. Это как ?
ИМХО: дурное дело затеяли народу мозги пудрить. Сделай lsh какой-нить и живи в шоколаде, а "святое незамай" :))
Дело личное, ессно, но "баба яга против" )) хотя это ничего не меняет.
ЗЫ: Тут на днях tomcat ставил, так апачи завернули его гнутым таром и сановский его просматривает, а развернуть - ... по всей морде. Пришлось доставлять гнутого тож. Правда у апачей на сайте предупреждение есть.
Катится *никсы к виндоподобному зоопарку...
  Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "RE: Непонятный sh"
Сообщение от XMan emailИскать по авторуВ закладки on 29-Май-02, 16:02  (MSK)
Мы друг друга не поняли :))
Я по поводу "наезда":
"линуксоиды в очередной раз хотели сделать как лучше, а сляпали как в России"

Как ни странно, на российском линухе оно работает так же, как у тебя на соляре - без изменений :))

  Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "RE: давай завязывать ))"
Сообщение от Арлекин Искать по авторуВ закладки on 29-Май-02, 16:11  (MSK)
Пардон.
Я, увы, только слышал про наш линух и кроме мандрейка и 62-й шапки ничего линуксового руками не трогал.
А про Россию я говорил в смысле "как всегда", а не про качество программ.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "RE: давай завязывать ))"
Сообщение от XMan emailИскать по авторуВ закладки on 29-Май-02, 16:47  (MSK)
Да все понятно...
Ладно, по-прикалывались и хватит :))
  Рекомендовать в FAQ | Cообщить модератору | Наверх

17. "RE: давайте, давайте"
Сообщение от denb Искать по авторуВ закладки on 29-Май-02, 17:14  (MSK)
Прошу прощенье за настойчивость, но все таки хотелось бы знать почему не работатет во фре такая конструкция:
---------
#!/bin/sh
read z
if [ "$z" = "Y" ]; then
      echo "Yes"
else
      echo "No"
fi
---------
,и что надо сделать, чтобы она заработала
  Рекомендовать в FAQ | Cообщить модератору | Наверх

18. "RE: давайте, давайте"
Сообщение от Арлекин Искать по авторуВ закладки on 29-Май-02, 17:31  (MSK)
>Прошу прощенье за настойчивость, но все
>таки хотелось бы знать почему

на такой вопрос наверное только автор может ответить

>не работатет во фре такая
>конструкция:
>---------
>#!/bin/ksh
^^^^^^^^^^^^^^^
ТАК попробуй. Может корн возьмет.

>read z
>if [ "$z" = "Y" ];
>then
>      
>echo "Yes"
>else
>      
>echo "No"
>fi
>---------
>,и что надо сделать, чтобы она
>заработала


  Рекомендовать в FAQ | Cообщить модератору | Наверх

19. "RE: давайте, давайте"
Сообщение от denb Искать по авторуВ закладки on 29-Май-02, 17:45  (MSK)
>>---------
>>#!/bin/ksh
>^^^^^^^^^^^^^^^
>ТАК попробуй. Может корн возьмет.

ну ненужен мне корн!!!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

20. "RE: давайте, давайте"
Сообщение от mezantrop Искать по авторуВ закладки on 29-Май-02, 17:55  (MSK)
>>>---------
>>>#!/bin/ksh
>>^^^^^^^^^^^^^^^
>>ТАК попробуй. Может корн возьмет.
>
>ну ненужен мне корн!!!


очень странно :)) только что проверял у меня работает FreeBSD 4.3

  Рекомендовать в FAQ | Cообщить модератору | Наверх

21. "RE: давайте, давайте"
Сообщение от crash Искать по авторуВ закладки on 30-Май-02, 03:15  (MSK)
>>>>---------
>>>>#!/bin/ksh
>>>^^^^^^^^^^^^^^^
>>>ТАК попробуй. Может корн возьмет.
>>
>>ну ненужен мне корн!!!
>
>
>очень странно :)) только что проверял
>у меня работает FreeBSD 4.3
>
только что проверял у меня работает FreeBSD 4.4


  Рекомендовать в FAQ | Cообщить модератору | Наверх

22. "RE: давайте, давайте"
Сообщение от mezantrop Искать по авторуВ закладки on 30-Май-02, 09:30  (MSK)
>>>>>---------
>>>>>#!/bin/ksh
>>>>^^^^^^^^^^^^^^^
>>>>ТАК попробуй. Может корн возьмет.
>>>
>>>ну ненужен мне корн!!!
>>
>>
>>очень странно :)) только что проверял
>>у меня работает FreeBSD 4.3
>>
>только что проверял у меня работает
>FreeBSD 4.4
Ладно издеваться :)) Хорошо, был не прав, исправляюсь :))
Только что проверял, у меня работает. ОС FreeBSD 4.3
  Рекомендовать в FAQ | Cообщить модератору | Наверх

23. "RE: давайте, давайте"
Сообщение от Algr emailИскать по авторуВ закладки on 30-Май-02, 09:51  (MSK)
Попробуй так:

#!/bin/sh

read z
if [ "$z" = "Y" ]
then
echo Y
else
echo N
fi

И проверь, чтобы нигде в концах строк не стояло пробелов

  Рекомендовать в FAQ | Cообщить модератору | Наверх

24. "RE: давайте, давайте"
Сообщение от YOSNAIL emailИскать по авторуВ закладки on 30-Май-02, 18:30  (MSK)
>Попробуй так:
>
>#!/bin/sh
>
>read z
>if [ "$z" = "Y" ]
>
>then
>echo Y
>else
>echo N
>fi
>
>И проверь, чтобы нигде в концах
>строк не стояло пробелов

Ну вы тут и замалаживаете! Если мой работающий везде CASE не устраивает ! Используйте оператор
TEST
Вот простейший пример! ( Лично тестировал на
FreeBSD от 4.0 до 5.0, на Linux REDHAT 7.1 7.2,
все отлично работает! )
==============
#!/bin/sh
# My second Bourn script
# Nickogda ne pishite ni na chem krome SH или CSH
# T.k. SH - standartniy iazik SHELL!
# A cho - to tipa Korn moget i ne bit!
# U menia tolko SH & CSH !!!
printf "INPUT : "
read ANS_
  test $ANS_
if [ $? != 0 ]
then
  printf "You don't answer! Good bye!\n\n"
  return 1
fi
if [ $ANS_ = 'Y' ] || [ $ANS_ = 'y' ]
then
  printf "YES\n\n"
  return 0
fi
if [ $ANS_ = 'N' ] || [ $ANS_ = 'n' ]
then
  printf "NO\n\n"
  exit 0
fi
printf "I don't know what is this!\n\n"
return 1

=================================

  Рекомендовать в FAQ | Cообщить модератору | Наверх

25. "RE: давайте, давайте"
Сообщение от Арлекин Искать по авторуВ закладки on 31-Май-02, 08:55  (MSK)
"Работающий везде case" - лечение симптомов, а не болезни. Можно на перле, например, написать, csh, джяве или С.
Человек похоже хочет выяснить ПРИЧИНУ, а не избавиться от следствия. Он по-своему прав, ибо если синтаксис аннонсирован, он ОБЯЗАН работать, а как его обойти уже другой вопрос.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

26. "RE: давайте, давайте"
Сообщение от denb Искать по авторуВ закладки on 31-Май-02, 09:26  (MSK)
>"Работающий везде case" - лечение симптомов,
>а не болезни. Можно на
>перле, например, написать, csh, джяве
>или С.
>Человек похоже хочет выяснить ПРИЧИНУ, а
>не избавиться от следствия. Он
>по-своему прав, ибо если синтаксис
>аннонсирован, он ОБЯЗАН работать, а
>как его обойти уже другой
>вопрос.

ВОТ ИМЕННО!!!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

27. "RE: Непонятный sh"
Сообщение от YOSNAIL emailИскать по авторуВ закладки on 01-Июн-02, 16:07  (MSK)
>Народ помогите!
>делаю так:
>#!/bin/sh
>read z
>if [ "$z" = "Y" ]; then
>      echo "Yes"
>else
>      echo "No"
>fi
>Все время выводит "Yes" и неважно, что ввожу я

Не бери в кавычки $z
Бери в одинарные кавыки 'Y'

И все будет ОК!
Будут типа вопросы, пиши мне на мыло YOSNAIL@ukr.net

C уважением Владислав Лазаренко ! :)))

  Рекомендовать в FAQ | Cообщить модератору | Наверх

28. "RE: Непонятный sh"
Сообщение от mike Искать по авторуВ закладки on 18-Июн-02, 12:56  (MSK)
>>Народ помогите!
>>делаю так:
>>#!/bin/sh
>>read z
>>if [ "$z" = "Y" ]; then
>>      echo "Yes"
>>else
>>      echo "No"
>>fi
>>Все время выводит "Yes" и неважно, что ввожу я
>
>Не бери в кавычки $z
  А если будет нажат ENTER ?
>Бери в одинарные кавыки 'Y'
  Можно и без кавычек
>
>И все будет ОК!
  May be ...
>Будут типа вопросы, пиши мне на мыло YOSNAIL@ukr.net
>
>C уважением Владислав Лазаренко ! :)))


  Рекомендовать в FAQ | Cообщить модератору | Наверх

29. "RE: Непонятный sh"
Сообщение от Albert MW emailИскать по авторуВ закладки on 21-Июн-02, 15:27  (MSK)
У меня изначальный пример работал на SCO...
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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