Функции в Bash

Автор: Admin

Дата:2013-01-29

Ранее:

1) Изучаем BASH (Основы)

2) Изучаем BASH (Инструкции)

3) Проверка условий в Bash

4) Циклы в Bash

5) Управление вводом и выводом в сценариях

Функции в Bash

Функции в Bash применяются для написания одного и того же кода в нескольких местах сценария с последующей возможностью подключения файла функций в сценарий или использование функции в командной строке..

Создается функция очень легко:

function function1 {
echo "Наша первая функция"
}

Пример 1

#!/bin/bash
function function1 {
 echo "Привет"
}
count=1
while  [ $count -le 3 ]
do
        function1
        count=$[ $count + 1 ]
done
echo "повторим"
function1


Пример 1.1

#!/bin/bash
function function1 {
prm1='echo "Привет"'
count=1
while  [ $count -le 3 ]
do
       $prm1
        count=$[ $count + 1 ]
done }
echo "повторим1"
function1
echo "повторим2"
function1


Пример 2

#!/bin/bash
function function1 {
 echo "Привет"
}
function function2 {
 echo "Привет 2"
}
count=1
while  [ $count -le 3 ]
do
        function1
        count=$[ $count + 1 ]
done
echo "повторим"
function1
echo "Функция2"
function2

Статус выхода функции - определяется возвращенной последней командой функции.

#!/bin/bash
function ping1 {
 ping -c 1 ya.ru &> /dev/null
}
function ping2 {
 ping nippppp.gf &> /dev/null
}
function  lsa {
ls -al test
}
ping1
echo  "Статус выхода функции ping2 $?"
ping2
echo  "Статус выхода функции ping2 $?"
lsa
echo  "Статус выхода программы ls $?"

Переменная в функции

#!/bin/bash
function prm {
ls -al testFiles
}
#можно вывести так
prm
# А можно как переменную
prm1=`prm`
echo "Переменная: $prm1"

Передаем параметры в функцию. 

Давайте вспомним, что в сценарий можно передавать параметры.
Примером может стать простое математическое выражение:
# vi summ

#!/bin/bash
var1=$[ $1 + $2 ]
echo "Умножение: $var1"


# sh summ 2 10 - происходит простое сложение.

Так же можно и в функцию добавлять параметры из командной строки

Пример 1

# vi summ2

#!/bin/bash
function summ {
echo $[ $1 + $2 ]
}
value=`summ $1 $2`
echo "$value"

# sh summ 2 10

Пример 2

# vi funct

#!/bin/bash
function func1 {
echo $[$1 * $2 - $3]
}
if [ $# -eq 3 ]
then
        val=`func1 $1 $2 $3`
        echo "$val"
else
        echo "Используйте три параметра"
        echo "Пример: sh summ 20 3 6"
fi

# sh funct 4 5 3

Локальные и глобальные переменные в функциях.

В функциях используются два вида переменных.
Одни видны во всем скрипте, а другие только в области определения функции и не выходят за ее пределы.

Проверьте, что выйдет в двух вариантах

Пример 1.1 - Глобальная переменная

#!/bin/bash
function function1 {
var1=$[ 5+6 ]
var2=$[ 4-3 ]
}
var1=$[ 15-6 ]
var2=$[ 14-3 ]
function1
if (( $var1 <= $var2 ))
then
echo " $var1 меньше $var2 "
else
echo " $var1 больше $var2 "
fi

Пример 1.1 - Локальная переменная

#!/bin/bash
function function1 {
local var1=$[ 5+6 ]
local var2=$[ 4-3 ]
}
var1=$[ 15-6 ]
var2=$[ 14-3 ]
function1
if (( $var1 <= $var2 ))
then
echo " $var1 меньше $var2 "
else
echo " $var1 больше $var2 "
fi


Массивы в функции

Давайте вспомним, что такое массив вообще.
Массив, по своей сути, предоставляет возможность в одной переменной хранить несколько значений, которые можно вызывать.

Вызывает все
#!/bin/bash
prm1=(1 2 3 4 5 6 7 8 9)
echo ${prm1[*]}


Вызывает пятое указанное значение

#!/bin/bash
prm1=(1 2 3 4 5 6 7 8 9)
echo ${prm1[5]}

Давайте посмотрим на пример

#!/bin/bash
function func1 {
array=(`echo "$@"`)
echo "${array[*]}"
}
mass=(1 2 3)
echo  "Здесь просто выводится массив: ${mass[*]}"
func1 ${mass[*]}

Библиотеки Bash


Для того что бы вызвать повторяющуюся функцию в нужном нам сценарии необходимо просто создать файл  функций
# vi bibl1

function func1 {
echo $[$1 * $2 - $3]
}


Указать место расположение (подключить его к сценарию)

#!/bin/bash
.  /func/bibl1
if [ $# -eq 3 ]
then
        val=`func1 $1 $2 $3`
        echo "$val"
else
        echo "Используйте три параметра"
        echo "Пример: sh summ 20 3 6"
fi

Более того:

Функцию можно определить в файле .bashrc, после того как Вы перезапустите Linux функцию можно так же вставлять в скрипт не указывая место расположение файла функций. Более того функцию можно использовать сразу в командной строке.

Далее >>> Bash - создание пользовательского меню

Количество просмотров: 6769

Комментарии к статье:

Автор комментария: Дмитрий
Дата: 2015-09-18

Ужасно.

Добавить комментарий

Введите сумму с картинки

© Plutonit.ru - Администрирование, настройка Linux и Windows 2009 - 2017