Bash
Арифметические операции
Напишем программу для вычисления суммы двух чисел.
Создадим файл myscript
Пишем в файле:
#!/bin/bash
a=4
b=12
c=$((a+b))
echo "Summa: $c"
Запускаем программу
Пишем в терминале:
bash ./myscript
Присваивание
Напишем программу для замены значений двух чисел.
Напишем код:
#!/bin/bash
a=12
b=5
echo "A: $a B: $b"
c=$a
a=$b
b=$c
echo "A: $a B: $b"
Подстановка команд
Напишем программу для вывода на экран текущей директории.
Пишем код:
#!/bin/bash
p=$(pwd)
echo "This folder is: $p"
В данном коде в переменную p был сохранён результат работы системной функции pwd
Конструкции ветвления
Сравнение чисел
Напишем программу для сравнения двух целых чисел.
Пишем код:
#!/bin/bash
a=8
b=4
if [ $a -gt $b ]
then
echo "A bigger B"
elif [ $a -lt $b ]
then
echo "A less B"
else
echo "A equally B"
fi
Команды сравнения числовых значений:
n1 -eq n2 Возвращает истинное значение, если n1 равно n2.
n1 -ge n2 Возвращает истинное значение, если n1 больше или равно n2.
n1 -gt n2 Возвращает истинное значение, если n1 больше n2.
n1 -le n2 Возвращает истинное значение, если n1 меньше или равно n2.
n1 -lt n2 Возвращает истинное значение, если n1 меньше n2.
n1 -ne n2 Возвращает истинное значение, если n1 не равно n2.
Сравнение строк
Напишем программу для сравнения двух строк.
Пишем код:
#!/bin/bash
x="xxx xx xx"
y="bbb bb bb"
if [ "$x" \> "$y" ]
then
echo "$x"
else
echo "$y"
fi
Символы ">" и "<" необходимо экранировать.
Команды сравнения строк:
str1 = str2 Проверяет строки на равенство, возвращает истину, если строки идентичны.
str1 != str2 Возвращает истину, если строки не идентичны.
str1 < str2 Возвращает истину, если str1 меньше, чем str2.
str1 > str2 Возвращает истину, если str1 больше, чем str2.
-n str1 Возвращает истину, если длина str1 больше нуля.
-z str1 Возвращает истину, если длина str1 равна нулю.
Циклы
Цикл For
Напишем программу, которая выводит все числа на определённом отрезке и их общую сумму.
Пишем код:
#!/bin/bash
a=5
b=8
s=0
for (( i=$a; i <= $b; i++ ))
do
echo "Index: $i"
s=$((s+i))
done
echo "Summa of numbers: $s"
Цикл While
Напишем программу, которая выводит числа на определённом отрезке в обратном порядке.
Пишем код:
#!/bin/bash
x=7
z=2
while [ $x -ge $z ]
do
echo "X: $x"
x=$((x-1))
done
Вложенные циклы
Напишем программу, которая использует вложенные циклы.
Пишем код:
#!/bin/bash
n=3
m=2
for (( i=1; i <= $n; i++))
do
echo "I: $i"
for (( j=1; j <= $m; j++))
do
echo " J: $j"
done
done
Команда break
Напишем программу, в которой используется команда break для выхода из цикла.
Напишем код:
#!/bin/bash
a=1
c=0
while [ $a -eq 1 ]
do
c=$((c+1))
echo "Hello $c"
if [ $c -eq 5 ]
then
break
fi
done
Параметры скрипта
Напишем программу, которая принимает в качестве параметров три целых числа.
Данная программа выводит на экран полученные параметры и их общую сумму.
Напишем код:
#!/bin/bash
a=$1
b=$2
c=$3
echo "A: $a"
echo "B: $b"
echo "C: $c"
s=$((a+b+c))
echo "Summa: $s"
Вызываем скрипт.
Пишем в терминале:
bash ./myscript 15 8 12
Ввод с клавиатуры
Напишем программу для расчёта периметра прямоугольника.
Ввод длин сторон осуществляется во время работы программы.
Пишем код:
#!/bin/bash
echo -n "Input A: "
read a
echo -n "Input B: "
read b
s=$((a+b))
p=$((s*2))
echo "Perimetr: $p"
Сигналы
При нажатии комбинации клавиш Ctrl + C увеличивать значение счётчика.
#!/bin/bash
number=0
one=1
incNumber() {
number=$((number+one))
echo " Number: $number "
}
trap "incNumber" SIGINT
while [ $number -eq $number ]
do
sleep 5
done
Запуск в фоне
Запускаем код серверного приложения в фоне.
nohup node index.js &
После ввода команды на экране появится PID процесса.
Далее можно закрыть терминал.
Убить процесс:
kill 2960
Использование функций
Написать программу для расчёта периметра прямоугольника.
#!/bin/bash
getSumma () {
a=$1
b=$2
c=$((a + b))
echo $(($c))
}
getPerimeter () {
x=$1
y=$2
s=$(getSumma $x $y)
p=$((s + s))
echo $(($p))
}
echo -n "Input First: "
read aaa
echo -n "Input Second: "
read bbb
result=$(getPerimeter $aaa $bbb)
echo "Result = $result"
Last updated
Was this helpful?