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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> скрипт на Shell, где ошибка?? 
:(
    Опции темы
Shadowlord
Дата 14.2.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть задание написать скрипт который бы компелировал файлы указанные в качестве параметров, не пойму где ошибка
Код

str="@"
if [ -z  $1  ];
  then echo Parametr not found;
  else
  until [ -z $1 ]; do                
   if echo $str | grep @$1; then :   
    else
     if [ -e $1 ]; then               
      str=$str$1"@"
      if echo $1 | grep .c$; then
       g++ $1
       echo file $1 was compilled
      fi
      if echo $1 | grep .pas$; then
       echo file $1 was compilled
      fi
     fi 
   fi
  shift
  done
fi


PM MAIL   Вверх
nickless
Дата 15.2.2009, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


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

Репутация: 41
Всего: 181



Цитата(Shadowlord @  14.2.2009,  15:37 Найти цитируемый пост)
не пойму где ошибка

Shadowlord, ты бы хоть сказал что за ошибка, скрипт конечно не самым оптимальным образом, но вроде работает. Ну разве что .c файлы gcc компилируют а не g++


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Shadowlord
Дата 16.2.2009, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



в общем дело обстоит так на виртуальной машине(virtual pc 2007) стоит Suse 10.2 
запустить скрипт пытаюсь так 
sh script.sh l1.c

l1:
Код

#include <stdio.h>

int main()
{
   printf("CcCcCcCcC");
   return 0;
}


в результате  получаю
"syntax error: unexpected end of file"
PM MAIL   Вверх
bilbobagginz
Дата 16.2.2009, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


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

Репутация: 113
Всего: 317



думаю надо бы:
Код

sh script.sh 1.c




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Shadowlord
Дата 16.2.2009, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



bilbobagginz, не со все понял что ты имеешь ввиду, у меня есть файл l1.c 

PM MAIL   Вверх
nickless
Дата 16.2.2009, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


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

Репутация: 41
Всего: 181



Цитата(Shadowlord @  16.2.2009,  04:53 Найти цитируемый пост)
в результате  получаю
"syntax error: unexpected end of file" 

Ок, это весь вывод или еще что-нибудь пишет? Файл без скрипта компилируется? Скрипт из первого поста - это именно то, что записано в script.sh ? Что пишет sh --version ?


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Shadowlord
Дата 16.2.2009, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



скрипт то что из первого поста, пишет
Код

script.sh: line 21: syntax error: unexpected end of file


Gnu bash, version 3.1.17(1)-release (i586-suse-linux-gnu)
PM MAIL   Вверх
nickless
Дата 16.2.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


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

Репутация: 41
Всего: 181



Странно... можешь файл приаттачить? Может проблема в содержимом...


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Shadowlord
Дата 16.2.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



нет, да и не вижу в этом большого смысла в обоих файлах только то что я уже писал выше создавал я  их там же а потом руками текст набирал.
nickless,  ты у себя его проверял, не поделишься последовательностью действий(алгоритмом, как по шагам и где)
PM MAIL   Вверх
bilbobagginz
Дата 16.2.2009, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


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

Репутация: 113
Всего: 317



Цитата(Shadowlord @  16.2.2009,  17:56 Найти цитируемый пост)
bilbobagginz, не со все понял что ты имеешь ввиду, у меня есть файл l1.c 

тьфу, мне показалось, что ты использовал символ '|'. в оболочке bash (как и в остальных оболочках UNIX) есть особенное отношение к символу '|'. поэтому его применение в названиях файлов не самая хорошая идея.

возможно что стоит форматировать выражения if ; then else fi вот так:
Код

if [  ]; then
   # действие
else
   # действие
fi





--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Shadowlord
Дата 16.2.2009, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



bilbobagginz,  Это буква L  
PM MAIL   Вверх
nickless
Дата 16.2.2009, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


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

Репутация: 41
Всего: 181



Сейчас проверил на компе постарее, с 
Код

% sh --version
GNU bash, version 3.1.17(2)-release (i486-slackware-linux-gnu)

всё ок.

Цитата(Shadowlord @  16.2.2009,  19:36 Найти цитируемый пост)
ты у себя его проверял, не поделишься последовательностью действий(алгоритмом, как по шагам и где) 

Код

% vim bla.sh
копи-паст
% sh bla.sh
Parametr not found
% touch a.c
 % sh bla.sh a.c
a.c
/usr/lib/gcc/i486-slackware-linux/3.4.6/../../../crt1.o(.text+0x18): In function `_start':
../sysdeps/i386/elf/start.S:115: undefined reference to `main'
collect2: ld returned 1 exit status
file a.c was compilled

Ошибки компилятора понятны, я уже говорил почему, а скрипт пашет. Если проблема не в файле то я не знаю. Пробуй на другом компе, другим шеллом (например zsh, dash, ash) итд


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Shadowlord
Дата 16.2.2009, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



возможно дело все таки в файле с делал так
при строке
if echo $str | grep @$1; then:   
Код

% vim bla3.sh
копи-паст
% sh bla3.sh
bla3.sh: line 13: syntax error near unexpected token 'else'
bla3.sh : line 13:'           else'

а при строке 
if echo $str | grep @$1; then:
 
Код
 
bla3.sh: line 36: syntax error near unexpected token 'done'
bla3.sh : line 36:'     done'




Это сообщение отредактировал(а) Shadowlord - 16.2.2009, 21:37
PM MAIL   Вверх
bilbobagginz
Дата 16.2.2009, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


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

Репутация: 113
Всего: 317



я бы наверное написал так:
Код

str="@"
if [ -z  $1  ]; then
    echo "Parametеr not found"; # обращаем внимание на исправленное слово
else
    until [ -z $1 ]; do                
        if ! echo $str | grep @$1; then # обращаем внимание на "!"
            if [ -e $1 ]; then
                str=$str$1"@"
                if echo $1 | grep .c$; then
                    g++ $1
                    echo "file $1 was compiled" # обращаем внимание на исправленное слово
                fi
                if echo $1 | grep .pas$; then
                    echo "file $1 was compiled" # обращаем внимание на исправленное слово
                fi
            fi
        fi
        shift
    done
fi

нагляднее.



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Shadowlord
Дата 16.2.2009, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



bilbobagginz,  попробовал твой варинат, ругается вот на эту строку
if [ ! echo $str | grep @$1 ]; then
Код

bla3.sh: line 5: syntax error near unexpected token 'then'

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0607 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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