Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
язык_командного_интерпретатора_bash [2013/05/27 16:11] 46.231.215.230 [Арифметические выражения] |
язык_командного_интерпретатора_bash [2016/02/10 20:24] (текущий) |
||
|---|---|---|---|
| Строка 10: | Строка 10: | ||
| переменные не типизированы | переменные не типизированы | ||
| область видимости - весь код программы | область видимости - весь код программы | ||
| - | при обращениие | + | при обращениие |
| пример задания: | пример задания: | ||
| - | PETM = 10 \\ | + | PERM=10 \\ |
| echo $PERM\\ | echo $PERM\\ | ||
| Строка 27: | Строка 27: | ||
| - | MASS[0]=10 | + | MASS[0]=10\\ |
| - | MASS[1]=11 | + | MASS[1]=11\\ |
| - | MASS[2]=12 | + | MASS[2]=12\\ |
| ====== обращение к массиву ====== | ====== обращение к массиву ====== | ||
| Строка 45: | Строка 45: | ||
| - | MASS2=(10,11,12,13,14)\\ | + | MASS2=(10 11 12 13 14)\\ |
| - | echo ${MASS2}\\ | + | echo ${MASS2[2]}\\ |
| '' | '' | ||
| Строка 82: | Строка 82: | ||
| read[переменная] | read[переменная] | ||
| - | # | + | #!/bin/bash\\ |
| - | read var1 | + | read var1\\ |
| - | echo "Вы ввели $var1" | + | echo "Вы ввели $var1"\\ |
| Строка 106: | Строка 106: | ||
| ====== Арифметические выражения ====== | ====== Арифметические выражения ====== | ||
| + | |||
| + | #!/bin/bash | ||
| + | |||
| + | # Подстановка арифметических выражений | ||
| + | |||
| + | | ||
| + | |||
| + | echo " | ||
| + | |||
| + | echo " | ||
| + | |||
| + | |||
| + | ====== Условный оператор if ====== | ||
| + | |||
| + | |||
| + | ''# | ||
| + | |||
| + | # Пример if then else\\ | ||
| + | |||
| + | if rm test 2> /dev/null\\ | ||
| + | |||
| + | then\\ | ||
| + | |||
| + | echo " | ||
| + | |||
| + | else\\ | ||
| + | |||
| + | echo "Not deleted" | ||
| + | |||
| + | fi\\ | ||
| + | |||
| + | '' | ||
| + | |||
| + | |||
| + | ====== Проверка условий test ====== | ||
| + | |||
| + | выкажение test обычно используют в квадратных скобках | ||
| + | |||
| + | проверка существования файла: | ||
| + | |||
| + | '' | ||
| + | #!/bin/bash \\ | ||
| + | if [ -f test.sh ]; then\\ | ||
| + | echo "File exist" | ||
| + | else\\ | ||
| + | echo "File not found" | ||
| + | fi\\ | ||
| + | '' | ||
| + | |||
| + | ''# | ||
| + | |||
| + | 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 — истина, | ||
| + | |||
| + | Так же в условных операторах можно использовать логическое ' | ||
| + | |||
| + | |||
| + | ====== Оператор выбора case ====== | ||
| + | |||
| + | для | ||
| + | |||
| '' | '' | ||
| # | # | ||
| - | # Подстановка арифметических выражений\\ | + | echo; echo "Нажмите клавишу и затем клавишу Return." |
| + | read Keypress\\ | ||
| - | PERM=2\\ | + | case " |
| + | [a-z] ) echo " | ||
| + | [A-Z] ) echo " | ||
| + | [0-9] ) echo " | ||
| + | * ) echo " | ||
| + | esac # Допускается указывать диапазоны символов в [квадратных скобках]\\ | ||
| + | '' | ||
| - | echo " | ||
| - | echo " | ||
| + | #!/bin/bash | ||
| + | '' | ||
| + | echo -e ' | ||
| + | read Keypress\\ | ||
| + | case " | ||
| + | [s] ) / | ||
| + | [r] ) / | ||
| + | [d] ) / | ||
| + | esac | ||
| '' | '' | ||
| + | '' | ||
| + | # | ||
| + | echo -e " | ||
| + | read bukva\\ | ||
| + | echo -e " | ||
| + | echo "Вы ввели $bukva" | ||
| + | echo -e " | ||
| + | case " | ||
| + | a ) reboot ;;\\ | ||
| + | b ) useradd ;;\\ | ||
| + | * ) echo " | ||
| + | esac \\ | ||
| + | '' | ||
| + | ====== Цикл For ====== | ||
| + | простой цикл | ||
| + | ''# | ||
| + | # Пример for\\ | ||
| + | |||
| + | for I in 1 2 3 4 5 6 7 8 9 10\\ | ||
| + | |||
| + | do\\ | ||
| + | |||
| + | echo " $I "\\ | ||
| + | |||
| + | touch $I.txt\\ | ||
| + | |||
| + | done\\ | ||
| + | |||
| + | exit 0\\ | ||
| + | '' | ||
| + | |||
| + | цикл для с выбором данных из файла | ||
| + | |||
| + | |||
| + | файл с данными | ||
| + | |||
| + | '' | ||
| + | roman\\ | ||
| + | alexander\\ | ||
| + | andrey\\ | ||
| + | yrii\\ | ||
| + | alexey\\ | ||
| + | '' | ||
| + | скрипт создания папок для пользователей | ||
| + | |||
| + | ''# | ||
| + | |||
| + | for I in `cat users`\\ | ||
| + | do \\ | ||
| + | mkdir $I\\ | ||
| + | done \\ | ||
| + | exit 0\\ | ||
| + | |||
| + | '' | ||
| + | |||
| + | |||
| + | ====== Цикл While====== | ||
| + | |||
| + | |||
| + | # | ||
| + | # Primer while | ||
| + | X=1 | ||
| + | while [ $X -lt 10 ] | ||
| + | do | ||
| + | echo " | ||
| + | X=$(( $X+1 )) | ||
| + | done | ||
| + | exit 0 | ||
| + | |||
| + | ====== Оператор select ====== | ||
| + | |||
| + | |||
| + | '' | ||
| + | # | ||
| + | |||
| + | echo ' | ||
| + | |||
| + | select linux in " | ||
| + | do\\ | ||
| + | echo\\ | ||
| + | echo "Вы предпочитаете $linux." | ||
| + | echo "; | ||
| + | echo\\ | ||
| + | break # если ' | ||
| + | done\\ | ||
| + | |||
| + | exit 0\\ | ||
| + | |||
| + | '' | ||