В shell встроен язык программирования, называемый shell script. Поскольку, существуют две основные разновидности интерпретаторов shell: Bourne shell и С shell, имеются две разновидности языков программирования, встроенных в эти оболочки. Язык C shell, по своему синтаксису напоминает язык программирования C. Именно по этому оболочка и получила своё название. Язык Bourne shell — это самостоятельный язык со своим синтаксисом и особенностями.
переменные не типизированы область видимости - весь код программы при обращениие С определенной переменной ошибка не выдается
пример задания:
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 ))"
#!/bin/bash
# Пример if then else
if rm test 2> /dev/null
then
echo «Deleted»
else
echo «Not deleted»
fi
выкажение 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.
Так же в условных операторах можно использовать логическое 'И' &&, логическое 'ИЛИ' ||
для
#!/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
простой цикл
#!/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
#!/bin/bash # Primer while X=1 while [ $X -lt 10 ] do echo "--> $X <--" X=$(( $X+1 )) done exit 0
#!/bin/bash
echo 'Выберите ваш любимый linux: '
select linux in «Gentoo» «Debian» «Centos» «Fedora» «CentOS»
do
echo
echo «Вы предпочитаете $linux.»
echo »)«
echo
break # если 'break' убрать, то получится бесконечный цикл.
done
exit 0