Инструменты пользователя

Инструменты сайта


язык_командного_интерпретатора_bash

В shell встроен язык программирования, называемый shell script. Поскольку, существуют две основные разновидности интерпретаторов shell: Bourne shell и С shell, имеются две разновидности языков программирования, встроенных в эти оболочки. Язык C shell, по своему синтаксису напоминает язык программирования C. Именно по этому оболочка и получила своё название. Язык Bourne shell — это самостоятельный язык со своим синтаксисом и особенностями.

Переменные в Bash

переменные не типизированы область видимости - весь код программы при обращениие С определенной переменной ошибка не выдается

пример задания: PERM=10
echo $PERM

#!/bin/bash
PERM=10
echo $PERM
echo '$PERM'
echo «$PERM»
echo «PERM»

Массивы переменных

MASS[0]=10
MASS[1]=11
MASS[2]=12

обращение к массиву

echo ${MASS[0]}

#!/bin/bash
MASS[0]=10
MASS[1]=11
echo ${MASS[0]}
echo «MASS[0]=${MASS[0]}«
MASS2=(10 11 12 13 14)
echo ${MASS2[2]}

Переменные окружения

экспорт пере менных #!/bin/bash
STRING=«Hello World»
echo $STRING
просмотр переменных окружения

#! /bin/bash
clear
echo «Текущая директория = $PWD»
echo «Это UID = $UID»
echo «Текущий уровень исполнения = $SHLVL»
echo «Случайное число = $RANDOM»
echo «Текущая дата = `date`»
echo «Домашний каталог = $HOME»
echo «Регистрационное имя пользователя = $LOGNAME»
echo «Периодичность проверки почтового ящика = $MAILCHECK»
echo «Пути для поиска программ = $PATH»
echo «Внешний вид приглашения командной строки = $PS1»
echo «Внешний вид доп/ приглашения командной строки = $PS2»
echo «Текущий интерпретатор = $SHELL»
echo «Тип терминала = $TERM»

Чтение переменных

read[переменная]

#!/bin/bash
read var1
echo «Вы ввели $var1»

Подстановочные переменные

#!/bin/bash
# Примеры подстановки
clear
echo «
DATE=`date`
echo «Текущая дата = $DATE»
echo «
USERS=`who | wc -l`
echo «Пользователей в системе = $USERS»
echo «
UP=$(date; uptime)
echo «Текущие дата и uptime = $UP»
echo «

Арифметические выражения

  #!/bin/bash
  # Подстановка арифметических выражений
   PERM=2
   echo "2*2=$(( 2*$PERM ))"
   echo "((2*3+5)-4)/2=$(( ((2*3+5)-4)/2 ))"

Условный оператор if

#!/bin/bash
# Пример if then else
if rm test 2> /dev/null
then
echo «Deleted»
else
echo «Not deleted»
fi

Проверка условий test

выкажение test обычно используют в квадратных скобках

проверка существования файла:

#!/bin/bash
if [ -f test.sh ]; then
echo «File exist»
else
echo «File not found»
fi

#!/bin/bash read A
read B
if [ $A -ge $B ]
then
echo 'A > B'
else
echo 'A < B'
fi

для проверки на наличие файла, папки, ссылки и т.д. используются ключи:

-d Папка
-e Существует (также -a)
-f Стандартный файл
-h Символьная ссылка (также -L)
-p Именованный канал
-r Доступный вам для чтенения
-s Не пустой
-S Сокет
-w Доступный вам для записи
-N Был изменен со времени последнего прочтения

Сравнение чисел и строк:

Сравнение чисел происходит при помощи следующих операторов:

число1 -eq число2 — истина, если числа равны.
число1 -ne число2 — истина, если числа не равны.
число1 -gt число2 — истина, если первое число больше второго.
число1 -ge число2 — истина, если первое число больше или равно второму.
число1 -lt число2 — истина, если первое число меньше второго.
число1 -le число2 — истина, если первое число меньше или равно второму.

Сравнение строк:

-n строка — истина, если строка имеет не нулевую длину.
-z строка — истина, если строка имеет нулевую длину
строка1 = строка2 — истина, если строка1 идентична строке2.

Так же в условных операторах можно использовать логическое 'И' &&, логическое 'ИЛИ' ||

Оператор выбора case

для

#!/bin/bash
echo; echo «Нажмите клавишу и затем клавишу Return.»
read Keypress
case «$Keypress» in
[a-z] ) echo «буква в нижнем регистре»;;
[A-Z] ) echo «Буква в верхнем регистре»;;
[0-9] ) echo «Цифра»;;
* ) echo «Знак пунктуации, пробел или что-то другое»;;
esac # Допускается указывать диапазоны символов в [квадратных скобках]

#!/bin/bash echo -e 'Для запуска Веб сервера нажмите s \n Для перезапуска нажмите r \n Для остановки нажмите d'
read Keypress
case «$Keypress» in
[s] ) /etc/init.d/httpd start;;
[r] ) /etc/init.d/httpd restart ;;
[d] ) /etc/init.d/httpd stop;;
esac

#!/bin/bash
echo -e «Введите нужную букву \n a - для перезагрузки системы \n b -дл$
read bukva
echo -e «\n»
echo «Вы ввели $bukva»
echo -e «\n»
case «$bukva» in
a ) reboot ;;
b ) useradd ;;
* ) echo «Неверное значение!!! «
esac

Цикл For

простой цикл

#!/bin/bash
# Пример for
for I in 1 2 3 4 5 6 7 8 9 10
do
echo » $I «
touch $I.txt
done
exit 0

цикл для с выбором данных из файла

файл с данными users

kirill
roman
alexander
andrey
yrii
alexey
скрипт создания папок для пользователей

#!/bin/bash
for I in `cat users`
do
mkdir $I
done
exit 0

Цикл While

 #!/bin/bash
 # Primer while
 X=1
 while [ $X -lt 10 ]
 do
 echo "--> $X <--"
 X=$(( $X+1 ))
 done
 exit 0

Оператор select

#!/bin/bash
echo 'Выберите ваш любимый linux: '
select linux in «Gentoo» «Debian» «Centos» «Fedora» «CentOS»
do
echo
echo «Вы предпочитаете $linux.»
echo »;-)
echo
break # если 'break' убрать, то получится бесконечный цикл.
done
exit 0

язык_командного_интерпретатора_bash.txt · Последнее изменение: 2016/02/10 20:24 (внешнее изменение)

DokuWiki Appliance - Powered by TurnKey Linux