Здравствуйте!Только начал изучать юникс и тут возникла такая проблема.
Пытаюсь написать скрипт, простейший, в цикле выводить что-нибудь.
Пример:#!/bin/sh
#
i=1while [ $i -lt 254 ]
do
echo $i
i='expr $i+1'
doneБольше ничего в этом скрипте нету. При запуске выдаёт сообщение:
line 5: [: too many argumentsПомогите!!! В чём грабли?
Посмотрите здесь: http://linuxportal.ru/forums/index.php/m/56674/
Кстати, это что, учебное задание по информатике? Скрипты совершенно
одинаковые и ошибки в них одинаковы...
>Посмотрите здесь: http://linuxportal.ru/forums/index.php/m/56674/
>Кстати, это что, учебное задание по информатике? Скрипты совершенно
>одинаковые и ошибки в них одинаковы...Говорит ссылка неправильная.
Это не учебное задание, просто был скрипт нарыт, автор которого утверждал в его работоспособности, при попытке запустить у себя было получено то же самое сообщение об ошибке.
Решил просто выбрабрать кусок с циклом и посмотреть, т.к. на остальное не ругалось.
За ссылку пардон, не до конца выделил перед копированием.
Вот так работает: 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-скриптах все переменные по умолчанию считаются текстовыми со всеми вытекающими последствиями.
>За ссылку пардон, не до конца выделил перед копированием.
>Вот так работает: 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-скриптам.
>Тогда есть ещё вопрос, где можно посмотреть какие типы можно использовать.
>Вообще какой-нибудь хороший мануал по shell-скриптам.Посмотреть можно на этом же сайте (раздел "Ссылки"): http://www.opennet.me/links/sml/16.shtml
>>Тогда есть ещё вопрос, где можно посмотреть какие типы можно использовать.
>>Вообще какой-нибудь хороший мануал по shell-скриптам.
>
>Посмотреть можно на этом же сайте (раздел "Ссылки"): http://www.opennet.me/links/sml/16.shtml
Ещё раз спасибо. А то не знал, что и делать