Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: не работает скрипт let: no found  (Прочитано 5661 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн it_boss_arg

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
не работает скрипт let: no found
« : 01 Март 2011, 08:18:22 »
Здравствуйте, у меня проблема в следующем при запуске скрипта вылетает ошибка let: no found, хотя в заголовке скрипта прописано #!/bin/bash,
 проверят команду echo $SHELL выдает /bin/bash. В чем может быть проблема, изначально было прописано #!/bin/sh эффект такой же.
« Последнее редактирование: 01 Март 2011, 08:24:20 от it_boss_arg »

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #1 : 01 Март 2011, 08:28:37 »
А можно:

1) Сам скрипт.
2) Вывод терминала.

Ну или хотя бы что-нибудь одно.
А то поди догадайся, что он там не нашел.
« Последнее редактирование: 01 Март 2011, 13:58:57 от inkblack »
Делюсь знаниями, но их у меня мало!

Оффлайн it_boss_arg

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #2 : 01 Март 2011, 08:43:36 »
Ошибка такая
/home/it/call.sh: 2: let: not found

а сам скрипт выглядит так
# !/bin/bash
let kol=`find /home/it/calls/ -type f|wc -l`
echo -n "$kol"
 


Пользователь решил продолжить мысль 01 Март 2011, 08:50:00:
сделал так
# !/bin/sh
kol=`find /home/it/calls/ -type f|wc -l`
echo -n "$kol"

Заработало, а почему с let не работает?
« Последнее редактирование: 01 Март 2011, 08:50:00 от it_boss_arg »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #3 : 01 Март 2011, 09:05:26 »
Я сталкивался с подобным.
Точно не скажу (надо пробовать), но вероятные причины такие :
- пробелы где-то надо вставить
- или/и кавычки или скобки.
Но четко и однозначно не скажу.
 

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #4 : 01 Март 2011, 09:05:40 »
Странно. У меня так:


p@e4:~$ ./itboss.bash
7133

p@e4:~$ cat itboss.bash
#!/bin/bash
let kol=`find /home/p/ -type f|wc -l`
echo $kol


И без let тоже работает. ???

Пользователь решил продолжить мысль [time]Tue Mar  1 09:06:51 2011[/time]:
А строку let kol ... я прямо отсюда скопировал.
« Последнее редактирование: 01 Март 2011, 09:07:20 от inkblack »
Делюсь знаниями, но их у меня мало!

Оффлайн it_boss_arg

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #5 : 01 Март 2011, 09:08:32 »
Весь скрипт такой
#!/bin/sh
let kol=`find /home/dima/calls/ -type f|wc -l`-1
let kol2=`find /var/spool/asterisk/outgoing/ -type f|wc -l`
#let kol3=`find /var/spool/asterisk/temp1234/ -type f|wc -l`
array=(`ls /home/dima/calls/`)
echo -n "$kol2"
if [ "$kol2" -le "20" ]
then
 let kol4=20-`find /var/spool/asterisk/outgoing/ -type f|wc -l`
 else
  if [ "$kol2" -eq "0" ]
  then
   let kol4=0
  fi
fi
   if [ "$kol2" -le "20" ]
    then
    let i=0
    while [ "$i" -le "$kol4" ]
     do
        f=${array[$i]}
        cp /home/dima/calls/$f /var/spool/asterisk/temp1234/
        rm /home/dima/calls/$f
        i=$(($i+1))
     done
let kol3=`find /var/spool/asterisk/temp1234/ -type f|wc -l`
#mv /home/dima/calls/* /var/spool/asterisk/temp1234/
     if [ "$kol3" -ne "0" ]
      then
        chown -R asterisk:asterisk /var/spool/asterisk/temp1234/
        mv /var/spool/asterisk/temp1234/* /var/spool/asterisk/outgoing/
     fi
fi
exit 0

Самое интересное что на GNU/Linux он работает без проблем а вот на ubuntu ругается

Пользователь решил продолжить мысль 01 Март 2011, 09:12:02:
когда изменил параметры в нем убрал let и скобки после определения массива array, начла выдавать эту ошибку  [: 33: Illegal number: 20-0
« Последнее редактирование: 01 Март 2011, 09:12:02 от it_boss_arg »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #6 : 01 Март 2011, 09:17:11 »
Попробуйте
bash -c "help let"

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #7 : 01 Март 2011, 09:19:12 »

Самое интересное что на GNU/Linux он работает без проблем а вот на ubuntu ругается


А вот с этого места нельзя ли поподробнее??
« Последнее редактирование: 01 Март 2011, 13:59:19 от inkblack »
Делюсь знаниями, но их у меня мало!

Оффлайн it_boss_arg

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #8 : 01 Март 2011, 09:25:00 »
есть у меня еще сервер на котором установлен Linux  2.6.18-128.el5 GNU/Linux, на нем стоит выше указанный скрипт и полноценно отрабатывается, появилась аналогичная задача на другом сервере где стоит Linux ubuntu 2.6.24-24-server, думал что проблем с отработкой скрипта не будет, а они вот появились.


Пользователь решил продолжить мысль 01 Март 2011, 09:28:34:
#!/bin/sh
kol=`find /home/dima/calls/ -type f|wc -l`-1
kol2=`find /var/spool/asterisk/outgoing/ -type f|wc -l`
# kol3=`find /var/spool/asterisk/temp1234/ -type f|wc -l`
array=`ls /home/dima/calls/`
echo -n "$kol2"
if [ "$kol2" -le "20" ]
then
  kol4=20-`find /var/spool/asterisk/outgoing/ -type f|wc -l`
 else
  if [ "$kol2" -eq "0" ]
  then
    kol4=0
  fi
fi
   if [ "$kol2" -le "20" ]
    then
     i=0
    while [ "$i" -le "$kol4" ]
     do
        f=${array[$i]}
        cp /home/dima/calls/$f /var/spool/asterisk/temp1234/
        rm /home/dima/calls/$f
        i=$(($i+1))
     done
 kol3=`find /var/spool/asterisk/temp1234/ -type f|wc -l`
#mv /home/dima/calls/* /var/spool/asterisk/temp1234/
     if [ "$kol3" -ne "0" ]
      then
        chown -R asterisk:asterisk /var/spool/asterisk/temp1234/
        mv /var/spool/asterisk/temp1234/* /var/spool/asterisk/outgoing/
     fi
fi
exit 0

Сейчас скрипт выгдядить так и вываливает ошибку 0[: 33: Illegal number: 20-0
« Последнее редактирование: 01 Март 2011, 09:28:34 от it_boss_arg »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #9 : 01 Март 2011, 09:31:34 »
Все дело в версии bash.
LET - это встроенная команда bash.
Посмотрите, что за версия.

Оффлайн фирэфохэ

  • Старожил
  • *
  • Сообщений: 2169
  • straightedge
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #10 : 01 Март 2011, 09:36:02 »
#!/bin/sh замени на #!/bin/bash.

Пользователь решил продолжить мысль 01 Март 2011, 09:37:36:
sh - это dash, а не bash:
$ ls -l /bin/*sh
-rwxr-xr-x 1 root root 934336 2010-04-19 05:16 /bin/bash*
-rwxr-xr-x 1 root root 101608 2010-04-02 02:29 /bin/dash*
lrwxrwxrwx 1 root root      4 2010-11-17 01:16 /bin/rbash -> bash*
lrwxrwxrwx 1 root root      4 2010-11-17 01:16 /bin/sh -> dash*
lrwxrwxrwx 1 root root      7 2010-11-17 01:16 /bin/static-sh -> busybox*
« Последнее редактирование: 01 Март 2011, 09:37:36 от фирэфохэ »
http://i18.ЗАПРЕЩЁННЫЙ РЕСУРС/big/2011/0325/6d/19eaa72dd24048a6fb0587832c4b096d.gif КДЕ - УГ. Дебиан - недоось.

Оффлайн it_boss_arg

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #11 : 01 Март 2011, 09:58:31 »
заработало..... я просто с тормозил, запускал скрипт через sh , а надо было через bash на данный момент все работает. Спасибо за помощь. 
« Последнее редактирование: 01 Март 2011, 10:05:04 от it_boss_arg »

Оффлайн фирэфохэ

  • Старожил
  • *
  • Сообщений: 2169
  • straightedge
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #12 : 01 Март 2011, 10:02:27 »
#!/bin/bash
let kol=`find /home/dima/calls/ -type f|wc -l`-1
kol2=`find /var/spool/asterisk/outgoing/ -type f|wc -l`
# kol3=`find /var/spool/asterisk/temp1234/ -type f|wc -l`
array=`ls /home/dima/calls/`
echo -n "$kol2"
if [ "$kol2" -le "20" ]
then
  let kol4=20-`find /var/spool/asterisk/outgoing/ -type f|wc -l`
 else
  if [ "$kol2" -eq "0" ]
  then
    kol4=0
  fi
fi
   if [ "$kol2" -le "20" ]
    then
     i=0
    while [ "$i" -le "$kol4" ]
     do
        f=${array[$i]}
        cp /home/dima/calls/$f /var/spool/asterisk/temp1234/
        rm /home/dima/calls/$f
        i=$(($i+1))
     done
 kol3=`find /var/spool/asterisk/temp1234/ -type f|wc -l`
#mv /home/dima/calls/* /var/spool/asterisk/temp1234/
     if [ "$kol3" -ne "0" ]
      then
        chown -R asterisk:asterisk /var/spool/asterisk/temp1234/
        mv /var/spool/asterisk/temp1234/* /var/spool/asterisk/outgoing/
     fi
fi
exit 0
« Последнее редактирование: 01 Март 2011, 13:44:59 от фирэфохэ »
http://i18.ЗАПРЕЩЁННЫЙ РЕСУРС/big/2011/0325/6d/19eaa72dd24048a6fb0587832c4b096d.gif КДЕ - УГ. Дебиан - недоось.

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #13 : 01 Март 2011, 10:08:02 »
Ну да, Illegal number: 20-0 это он ругается на

kol4=20-`find /var/spool/asterisk/outgoing/ -type f|wc -l`                  в строке 9
— получается 20-0,
а потом
while [ "$i" -le "$kol4" ]                                                           в строке 19

может, kol4=$((20-`find /var/spool/asterisk/outgoing/ -type f|wc -l`)) ?

Но проблему с let это не объясняет.
« Последнее редактирование: 01 Март 2011, 10:10:30 от inkblack »
Делюсь знаниями, но их у меня мало!

Оффлайн фирэфохэ

  • Старожил
  • *
  • Сообщений: 2169
  • straightedge
    • Просмотр профиля
Re: не работает скрипт let: no found
« Ответ #14 : 01 Март 2011, 10:18:13 »
Но проблему с let это не объясняет.
/bin/sh виноват, я писал уже:
$ dash
$ let f=1+2
dash: let: not found
http://i18.ЗАПРЕЩЁННЫЙ РЕСУРС/big/2011/0325/6d/19eaa72dd24048a6fb0587832c4b096d.gif КДЕ - УГ. Дебиан - недоось.

 

Страница сгенерирована за 0.062 секунд. Запросов: 22.