The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Не могу понять в чём проблема, !*! gadpolzuchiy, 21-Мрт-05, 04:30  [смотреть все]
Здравствуйте!

Только начал изучать юникс и тут возникла такая проблема.
Пытаюсь написать скрипт, простейший, в цикле выводить что-нибудь.
Пример:

#!/bin/sh
#
i=1

while [ $i -lt 254 ]
do
echo $i
i='expr $i+1'
done

Больше ничего в этом скрипте нету. При запуске выдаёт сообщение:
line 5: [: too many arguments

Помогите!!! В чём грабли?

  • Не могу понять в чём проблема, !*! allez, 06:14 , 21-Мрт-05 (1)
    Посмотрите здесь: http://linuxportal.ru/forums/index.php/m/56674/
    Кстати, это что, учебное задание по информатике? Скрипты совершенно
    одинаковые и ошибки в них одинаковы...
    • Не могу понять в чём проблема, !*! gadpolzuchiy, 07:03 , 21-Мрт-05 (2)
      >Посмотрите здесь: http://linuxportal.ru/forums/index.php/m/56674/
      >Кстати, это что, учебное задание по информатике? Скрипты совершенно
      >одинаковые и ошибки в них одинаковы...

      Говорит ссылка неправильная.
      Это не учебное задание, просто был скрипт нарыт, автор которого утверждал в его работоспособности, при попытке запустить у себя было получено то же самое сообщение об ошибке.
      Решил просто выбрабрать кусок с циклом и посмотреть, т.к. на остальное не ругалось.


      • Не могу понять в чём проблема, !*! allez, 07:36 , 21-Мрт-05 (3)
        За ссылку пардон, не до конца выделил перед копированием.
        Вот так работает: http://linuxportal.ru/forums/index.php/m/56674/?
        Ну и на всякий случай (если опять не сработает) объяснение:

        1: #!/bin/sh
        2: #
        3: i=1
        4:
        5: while [ $i -lt 254 ]
        6: do
        7: echo $i
        8: i='expr $i+1'
        9: done

        Во-первых, в строке 8 нужно исправить прямые кавычки на обратные: i=`expr $i+1`,
        а во-вторых переменную i в строке 3 необходимо объявить как целочисленную: declare -i i=1.
        Дело в том, что в shell-скриптах все переменные по умолчанию считаются текстовыми со всеми вытекающими последствиями.

        • Не могу понять в чём проблема, !*! gadpolzuchiy, 11:04 , 21-Мрт-05 (4)
          >За ссылку пардон, не до конца выделил перед копированием.
          >Вот так работает: http://linuxportal.ru/forums/index.php/m/56674/?
          >Ну и на всякий случай (если опять не сработает) объяснение:
          >
          >1: #!/bin/sh
          >2: #
          >3: i=1
          >4:
          >5: while [ $i -lt 254 ]
          >6: do
          >7: echo $i
          >8: i='expr $i+1'
          >9: done
          >
          >Во-первых, в строке 8 нужно исправить прямые кавычки на обратные: i=`expr $i+1`,
          >
          >а во-вторых переменную i в строке 3 необходимо объявить как целочисленную: declare
          >-i i=1.
          >Дело в том, что в shell-скриптах все переменные по умолчанию считаются текстовыми
          >со всеми вытекающими последствиями.

          Огромное спасибо!
          Всё поправил и зарабоатало :)
          Тогда есть ещё вопрос, где можно посмотреть какие типы можно использовать.
          Вообще какой-нибудь хороший мануал по shell-скриптам.




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

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