Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
linux:binbash [2022/11/22 05:39] admin |
linux:binbash [2025/02/10 15:38] (текущий) admin |
||
---|---|---|---|
Строка 77: | Строка 77: | ||
[index_xyz]=value_xyz | [index_xyz]=value_xyz | ||
) | ) | ||
+ | |||
+ | # Перебор массива должен быть таким | ||
+ | # Обязательно с воскл знаком, | ||
+ | for key in ${!from_49[@]}; | ||
+ | |||
</ | </ | ||
Строка 167: | Строка 172: | ||
Обработка диапазонных значений.\\ | Обработка диапазонных значений.\\ | ||
**for** условие **do** действие **done**. | **for** условие **do** действие **done**. | ||
- | <code bash> for (( i=100; i>1; 1-- )); do action; done </ | + | <code bash> |
+ | for (( i=100; i>1; 1-- )); do action; done | ||
+ | |||
+ | # Внутри **((..)' | ||
- | Внутри **((..)' | ||
- | <code bash> | ||
for i in {100..104}; do action; done | for i in {100..104}; do action; done | ||
Строка 179: | Строка 185: | ||
numbers=" | numbers=" | ||
for i in `echo $numbers`; do action; done | for i in `echo $numbers`; do action; done | ||
+ | |||
+ | # Перебор массива, | ||
+ | list=(user1 user2 user3 user4 user5 user6) | ||
+ | for i in ${list[*]}; do | ||
+ | printf ' | ||
+ | influx -execute 'show grants for ' | ||
+ | done | ||
</ | </ | ||
Строка 248: | Строка 261: | ||
# В итоге, ждем тайм-аут один раз, для всех хостов | # В итоге, ждем тайм-аут один раз, для всех хостов | ||
</ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | **Записать случайные байты в файл**\\ | ||
+ | head -c 1024 / | ||
+ | |||
+ | dd if=/ | ||
+ | |||
+ | # только печатные символы | ||
+ | tr -dc ' | ||
+ | |||
+ | # либо base64 вместо tr, только менее гибко по символам | ||
+ | base64 < / | ||
+ | |||
+ | # ${RANDOM} - возвращает случайное число 0..32К | ||
+ | # случайное число от 1..10, (1+ чтобы небыло ноля) | ||
+ | $(1 + ${RANDOM} % 10) | ||
+ | |||
+ | # Еще так можно диапазон возвращать | ||
+ | # 1..5, вернуть одно число | ||
+ | $(shuf -i 1-5 -n 1) | ||
+ | </ | ||
+ | </ | ||
Строка 259: | Строка 297: | ||
test [expr] | test [expr] | ||
- | if test -f file.txt или [ -f file.txt ] | + | if test -f file.txt или [ -f file.txt ]; then |
- | then | + | |
rm file.txt | rm file.txt | ||
else | else | ||
echo 'no found' | echo 'no found' | ||
fi | fi | ||
+ | |||
+ | |||
+ | # Проверка передачи файла в первом аргументе | ||
+ | if (($# < 1)) || [ ! -f ${1} ]; then | ||
+ | echo " | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | # Если первый аргмент пустой или отсутствует | ||
+ | if [ -z ${1} ]; then | ||
+ | |||
+ | # Если второй аргумент НЕ пустой и не отсутствует | ||
+ | if [ -n ${2} ]; then | ||
+ | |||
+ | # Если отсутствует или пустые первый или второй аргументы | ||
+ | if [ -z ${1} ] || [ -z ${2} ]; then | ||
</ | </ | ||
Строка 295: | Строка 348: | ||
{{ : | {{ : | ||
</ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | <code bash> | ||
+ | # Такая конструкция сохранит ПИД последнего запущенного процесса в файл | ||
+ | & echo $! > file.pid | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | status=2 | ||
+ | for i in 1 2 3 | ||
+ | do | ||
+ | # Для kill нужны права | ||
+ | #if kill -0 `cat / | ||
+ | if ps -p `cat / | ||
+ | then | ||
+ | status=0 | ||
+ | break | ||
+ | fi | ||
+ | sleep 1 | ||
+ | done | ||
+ | |||
+ | echo " | ||
+ | exit $status | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | При условии что настроен беспарольный доступ\\ | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | ssh username@my-host -p 2444 'bash -s' << | ||
+ | |||
+ | if systemctl is-active --quiet " | ||
+ | sudo systemctl stop apache2 | ||
+ | sudo systemctl start nginx | ||
+ | sudo systemctl status nginx | ||
+ | else | ||
+ | sudo systemctl stop nginx | ||
+ | sudo systemctl start apache2 | ||
+ | sudo systemctl status apache2 | ||
+ | fi | ||
+ | |||
+ | ENDSSH | ||
+ | </ | ||
+ | |||
+ | |||
+ | Проверка процессов по списку PID | ||
+ | <code bash> | ||
+ | # Запуск фонового процесса с сохранением PID ($! для фонового процесса) | ||
+ | (/ | ||
+ | |||
+ | |||
+ | for pid in `cat pids`; do | ||
+ | if ! ps -p $pid > /dev/null; then | ||
+ | echo "exit 1 for pid - $pid" | ||
+ | exit 1 | ||
+ | fi | ||
+ | done | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | tmp=${0## | ||
+ | echo ${tmp%%.*} | ||
+ | echo " | ||
+ | echo ${0##*/} | sed ' | ||
+ | echo " | ||
+ | tmp2=$(basename " | ||
+ | echo $tmp2 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||