Skip to content

Commit 62317d2

Browse files
authored
Add files via upload
1 parent 9ee1350 commit 62317d2

3 files changed

+45
-0
lines changed

06_BASH_Функции_Библиотеки.sh

+38
Original file line numberDiff line numberDiff line change
@@ -168,3 +168,41 @@ arrayfunc ${myarray[*]}
168168

169169
# Рекурсивные функции
170170
##
171+
function factorial() {
172+
if [ ${1} -eq 1 ]
173+
then
174+
echo "1"
175+
else
176+
local temp=$((${1}-1))
177+
local result=$(factorial $temp)
178+
echo $(($result*${1}))
179+
fi
180+
}
181+
read -p "Введите переменную: " value
182+
result=$(factorial $value)
183+
echo "Факториал от $value равен $result"
184+
185+
# Создание и использование библиотек
186+
# Библиотеки спользуются для того, чтобы использовать функцию (блок кода) в другом скрипте, не используя копирование и вставку
187+
# Для вызова библиотеки в скрипте, используется команда "source"
188+
# У команды source есть псевдоним — оператор «точка». Для того, чтобы подключить файл в скрипте, в скрипт надо добавить конструкцию такого вида:. ./myscript
189+
##
190+
. ./06_BASH_Функции_Библиотеки_file
191+
# Или так: source ./06_BASH_Функции_Библиотеки_file
192+
result=$(addnum 10 20)
193+
echo "Результат: $result"
194+
195+
### !!!
196+
# Вызов bash-функций из командной строки
197+
# Функцию из библиотеки можно подключить в файле .bashrc, используя команду source
198+
# Как результат, вызывать функцию можно будет прямо из командной строки
199+
# Отредактируйте .bashrc, добавив в него такую строку (путь к файлу библиотеки в вашей системе, естественно, будет другим):
200+
# . /home/ddd/Program/06_BASH_Функции_Библиотеки_file
201+
# Или так: source /home/ddd/Program/06_BASH_Функции_Библиотеки_file
202+
# Теперь функцию можно вызывать прямо из командной строки:
203+
# $ addnum 10 20
204+
# Ещё приятнее то, что такая вот библиотека оказывается доступной всем дочерним процессам оболочки,
205+
# то есть — ей можно пользоваться в bash-скриптах, не заботясь о подключении к ним этой библиотеки.
206+
# Тут стоит отметить, что для того, чтобы вышеприведённый пример заработал, может понадобиться выйти из системы, а потом войти снова
207+
# Кроме того, обратите внимание на то, что если имя функции из библиотеки совпадёт с именем какой-нибудь стандартной команды,
208+
# вместо этой команды будет вызываться функция. Поэтому внимательно относитесь к именам функций
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
function addnum() {
2+
echo $((${1}+${2}))
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/bin/bash
2+
#
3+
##
4+

0 commit comments

Comments
 (0)