Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> скрипт для shell РедХата 
:(
    Опции темы
Mal Hack
Дата 6.3.2004, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Народ, подскажите, кто знает.
Нужно написать скрипт для shell Red Hat'a по следующему заданию: "Даны два прямоугольника, координаты которых задаются левым верхним и правым нижним углами. Определить, пересекаются ли они, если да, найти площадь пересечения".
Вот скрипт, который я написал:
Код
#!/bin/sh

echo 'Введите x1: '
read x1
echo 'Введите y1: '
read y1
echo 'Введите x2: '
read x2
echo 'Введите x3: '
read x3
echo 'Введите y2: '
read y2
echo 'Введите x4: '
read x4

y1 = `expr $y2 - $y1`
if [ $y1 -lt 0 ]
then
 y = `expr $y1 \* -1`
fi

if [ $x3 -gt $x1 -a $x3 -gt $x2 -a $x4 -gt $x1 -a $x4 -gt $x2 ]
then
 echo 'Не пересекаются'
elif [ $x1 -gt $x3 -a $x1 -gt $x4 -a $x2 -gt $x3 -a $x2 -gt $x4 ]
 then
  echo 'Не пересекаются'
else
if [ $x3 - gt $x1 -a $x2 -lt $x4 ]
 then
  s = `expr ( $x2 - $x3 ) \* $y`;
elif [ $x1 - gt $x3 -a $x2 -lt $x4 ]
  s = `expr ( $x2 - $x1 ) \* $y`;
elif [ $x1 - gt $x3 -a $x2 -gt $x4 ]
  s = `expr ( $x4 - $x1 ) \* $y`;
elif [ $x3 - gt $x1 -a $x2 -gt $x4 ]
  s = `expr ( $x2 - $x3 ) \* $y`;
fi
echo 'Площадь: '
echo $s
fi

Но, при запуске в FreeBSD Выдается ошибка:
Код
y1: not found
1: 1: Syntax error: word unexpected (expecting ")")

Подскажите, в чем дело... Голову уже третий день ломаю.
(команды и сам shell знаю очень плохо).
PM ICQ   Вверх
Sun
Дата 9.3.2004, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: нет
Всего: 48



Так у тебя на FreeBSD наверно не bash, а другая оболочка, вот она и не понимает твой скрипт.


--------------------
Account removed
PM MAIL   Вверх
__vi
Дата 9.3.2004, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 21.1.2004

Репутация: нет
Всего: -1



Цитата
Так у тебя на FreeBSD наверно не bash, а другая оболочка, вот она и не понимает твой скрипт.

А?
Mal Hack
Ты как запускаеш?
chmod +x go_baby_go_go.sh; ./go_baby_go_go.sh

Это сообщение отредактировал(а) __vi - 9.3.2004, 16:30
PM MAIL   Вверх
Mal Hack
Дата 9.3.2004, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Sun, пишу я для SH, о чем вверху и пишу...
__vi, да и так, и просто 1.sh...
Код
#!/bin/sh

echo 'Введите x1: '
read x1
echo 'Введите y1: '
read y1
echo 'Введите x2: '
read x2
echo 'Введите x3: '
read x3
echo 'Введите y2: '
read y2
echo 'Введите x4: '
read x4

sr = '0';

yr = `expr $y2 \- $y1`;
y = $yr

if [ $yr -lt $sr ]
then
y = `expr $y - $yr`;
y = `expr $y - $yr`;
fi

if [ $x3 -gt $x1 -a $x3 -gt $x2 -a $x4 -gt $x1 -a $x4 -gt $x2 ]
then
echo 'Не пересекаются';
elif [ $x1 -gt $x3 -a $x1 -gt $x4 -a $x2 -gt $x3 -a $x2 -gt $x4 ]
then
 echo 'Не пересекаются';
else
if [ $x3 -gt $x1 -a $x2 -lt $x4 ]
then
 s = `expr $x2 - $x3 \* $y`;
elif [ $x1 -gt $x3 -a $x2 -lt $x4 ]
then
 s = `expr $x2 - $x1 \* $y`;
elif [ $x1 -gt $x3 -a $x2 -gt $x4 ]
then
 s = `expr $x4 - $x1 \* $y`;
elif [ $x3 -gt $x1 -a $x2 -gt $x4 ]
then
 s = `expr $x2 - $x3 \* $y`;
fi
echo 'Площадь: '
echo $s
fi

Вот после выполнения этого кода он мне пишет:
Код
sr: not found
yr: not found
y: not found
expr: syntax error
y: not found
expr: syntax error
y: not found
Не пересекаются

На сколько я понимаю, где-то что-то не правильно в синтаксисе пишу или что-то в этом роде...
Давал скрпт (тот что выше) преподу, так он сказал, что во-первых там скобки не нужны, а во вторых между - и 1 должен быть пробел.
Как видите я еще проще сделал, но легче мне от этого не стало...
PM ICQ   Вверх
Sun
Дата 10.3.2004, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: нет
Всего: 48



У тебя при присваивании переменным значений перед и после = стоят пробелы. что недопустимо. Поэтому sr, yr и прочие воспринимаютя как команды шела а не как переменные.
Знак ; не надо ставить в конце строки, он используется для запуска более чем одной команды одной строкой. Попробуй запустить поправленный скрипт.
Код

#!/bin/sh

echo 'Введите x1: '
read x1
echo 'Введите y1: '
read y1
echo 'Введите x2: '
read x2
echo 'Введите x3: '
read x3
echo 'Введите y2: '
read y2
echo 'Введите x4: '
read x4

sr='0'

yr=`expr $y2 \- $y1`
y=$yr

if [ $yr -lt $sr ]
then
y=`expr $y - $yr`
y=`expr $y - $yr`
fi

if [ $x3 -gt $x1 -a $x3 -gt $x2 -a $x4 -gt $x1 -a $x4 -gt $x2 ]
then
echo 'Не пересекаются'
elif [ $x1 -gt $x3 -a $x1 -gt $x4 -a $x2 -gt $x3 -a $x2 -gt $x4 ]
then
echo 'Не пересекаются'
else
if [ $x3 -gt $x1 -a $x2 -lt $x4 ]
then
s=`expr $x2 - $x3 \* $y`
elif [ $x1 -gt $x3 -a $x2 -lt $x4 ]
then
s=`expr $x2 - $x1 \* $y`
elif [ $x1 -gt $x3 -a $x2 -gt $x4 ]
then
s=`expr $x4 - $x1 \* $y`
elif [ $x3 -gt $x1 -a $x2 -gt $x4 ]
then
s=`expr $x2 - $x3 \* $y`
fi
echo 'Площадь: '
echo $s
fi



--------------------
Account removed
PM MAIL   Вверх
Mal Hack
Дата 10.3.2004, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Sun, огромное спасибо. Теперь все заработало...
Ух, спасли вы меня, прям... Спасибо...
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.