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

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


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

**Это старая версия документа!**

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

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

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

пример задания: PETM = 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}

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

экспорт пере менных #!/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

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

-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

Цикл 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
alexandr
andrei
yrii
alexey
скрипт создания папок для пользователей

!/bin/bash\\

for I in cat users
do
mkdir $I
done
exit 0

язык_командного_интерпретатора_bash.1369752387.txt.gz · Последнее изменение: 2013/05/28 18:46 (внешнее изменение)

DokuWiki Appliance - Powered by TurnKey Linux