Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов.
8(977)608-78-62 adm@nixm.ru

По поводу sh

Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Re: По поводу sh

Сообщение nezabudka »

Да, я так понимаю запускаемый скрипт не соответствуе директории в которую заходим.
Поменяйте относительные пути ./run.sh ./auth.sh на полные /home/полный_путь/run.sh и т. д.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Re: По поводу sh

Сообщение nezabudka »

FoxSeaSha писал(а):Есть такое дедик малех лёг)
По другому и не могло быть., мы в замкнутом цикле запускаем кучу скриптов, притом бессмысленных. :D
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Re: По поводу sh

Сообщение nezabudka »

Попробуйте добавить в конце каждого скрипта закрытие сессии в которой
запускался скрипт. В конце первого скрипта строчка будет такая

Код: Выделить всё

screen -S Bungee -X quit
Для следующих вставте имя соответствующей сессии вместо Bungee
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
FoxSeaSha
Молчаливый гость
Молчаливый гость
Сообщения: 8
Зарегистрирован: 22 дек 2016, 17:24
Откуда: Moldova

Re: По поводу sh

Сообщение FoxSeaSha »

Я уже разобрался) Спасибо)
Olej

Re: По поводу sh

Сообщение Olej »

FoxSeaSha писал(а):( Что-то типо рекурсии )
Любопытная оговорка...

1. На shell/bash в принципе нельзя написать рекурсивные функции, в отличие от подавляющего большинства языков программирования.
Это связано с тем, что функции bash могут возвращать только значения кода завершения в пределах [0...255], т. е. в этом смысле — не имеющие возвращаемых вычисленных значений вообще.

2. Но можно организовать рекурсивный вызов самих скриптов bash из выполняющихся скриптов bash. Вот, как пример, вычисление чисел Фибоначчи:

Код: Выделить всё

#!/bin/bash 

if [ "$1" -lt "2" ] 
then 
   echo "1" 
else 
   f1=$($0 `expr $1 - 1`) 
   f2=$($0 `expr $1 - 2`) 
   echo `expr $f1 + $f2` 
fi 

Код: Выделить всё

[olej@dell speed]$ ./fibo.sh 8
34
Но это чудовищно медленно!

3. Можно и искусственно организовать (внутри скрипта) рекурсию в функциях bash (с очередью, стеком возвратов), хорошо понимая как вообще реализуется рекурсия вызовов. Те же числа Фибоначчи:

Код: Выделить всё

#!/bin/bash 

declare -a res 

fib () { 
   if [ "$1" -lt 2 ] 
   then 
      res[ $1 ]=1. 
   else. 
      fib `expr $1 - 1` 
      let s=${res[ `expr $1 - 1` ]}+${res[ `expr $1 - 2` ]} 
      res[ $1 ]=$s 
   fi 
} 

res[ 0 ]=1 
fib $1 
echo ${res[ $1 ]} 
И это на несколько порядков быстрее.
Ответить

Вернуться в «Решаем трудности вместе»