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

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

Загрузка не удалась. Возможно, проблемы с правами доступа?

linux:bash-if

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

linux:bash-if [2015/04/27 12:07]
linux:bash-if [2021/02/11 09:20] (текущий)
Строка 1: Строка 1:
 +===== Bash - проверки =====
 +Отсюда:​ http://​wiki.hasanov.ru/​ubuntu/​bash_input
 +=== Проверка UID ===
 +<​code>​
 +UID_ROOT=0
 + 
 +if [ "​$UID"​ -ne "​$UID_ROOT"​ ]
 +then
 +  echo "​Для работы требуются права root"
 +  exit 1
 +fi
 +</​code>​
 +=== Проверка входящих параметров ===
  
 +== Проверка на существование ==
 +<​code>​
 +if [ -z "​$1"​ ]
 +then
 +  echo "​Значение не задано"​
 +  exit 1
 +fi
 +</​code>​
 +
 +== Обязательно присутствие двух параметров ==
 +<​code>​
 +if [[ -z "​$1"​ || -z "​$2"​ ]]
 +then
 +  echo "​Значение не задано"​
 +  exit 1
 +fi
 +</​code>​
 +
 +== Проверки файлов и каталогов ==
 +
 +== Проверка на существование директории ==
 +
 +<​code>​
 +if [ ! -d "​$DIR"​ ]; then
 +  echo "​Директория не верна"​
 +  exit 1
 +fi
 +</​code>​
 +
 +== Проверка на существование файла ==
 +<​code>​
 +if [ ! -e "​$FILE"​ ]; then
 +  echo "​Файл не найден"​
 +  exit 1
 +fi
 +</​code>​
 +
 +== Директория существует и доступна для записи ==
 +<​code>​
 +if ! [[ -d "​$FTPDIR"​ && ​ -w "​$FTPDIR"​ ]]; then
 +  echo "​Директория не верна или отсутствуют права для записи"​
 +  exit 1
 + fi
 +</​code>​
 +
 +=== Прочее ===
 +
 +== Проверка существования файла, а также есть есть права на чтение и выполнение. ==\\
 +Если условия не выполняются,​ то выполнится exit\\
 +<​code>​
 +test -x /usr/sbin/ || exit 1
 +</​code>​
 +
 +== Проверка существования пользователя ==
 +<​code>​
 +grep "​^$username:"​ /etc/passwd >/​dev/​null
 +if [ $? -ne 0 ]; then
 + echo "​Пользователь не найден"​
 + exit 1
 +fi
 +</​code>​
 +
 +===== То же самое - но проще =====
 +Отсюда:​ http://​ru.najomi.org/​_nix/​bash/​comparsion\\
 +\\
 +==== Сравнения чисел ====
 +<​code>​
 +[ A -eq B ]   # равно
 +[ A -ne B ]   # не равно
 +[ A -gt B ]
 +[ A -lt B ]
 +[ A -ge B ]
 +[ A -le B ]
 +(( A < B ))
 +(( A <= B ))
 +(( A > B ))
 +(( A >= B ))
 +</​code>​
 +==== Сравнения строк ====
 +<​code>​
 +[ A = B ]
 +[ A == B ]
 +[ A != B ]
 +[ A \< B ]
 +[ A \> B ]
 +[ -z A ]    # строка пустая?​
 +[ -n A ]    # строка не пустая?​
 +</​code>​
 +==== Сравнения файлов ====
 +<​code>​
 +-e     ​Файл существует
 +-f     ​Обычный файл
 +-s     ​Ненулевой размер файла
 +-d     ​Является каталогом
 +-b     ​Является блочным устройством (cdrom)
 +-c     ​Является символьным устройство
 +-p     ​Является каналом
 +-h     ​Является символической ссылкой
 +-L     ​Является символической ссылкой
 +-S     ​Является сокетом
 +-t 0   ​Является stdin
 +-t 1   ​Является stdout
 +-r     ​Доступен для чтения
 +-w     ​Доступен для записи
 +-x     ​Доступен для исполнения
 +-g     ​Есть sgid
 +-u     ​Есть suid
 +-k     ​Есть sticky bit
 +-O     Я — владелец?​
 +-G     ​Моя группа — владелец?​
 +-N     ​Файл был модифицирован после чтения?​
 +F1 -nt F2    F1 новее чем F2?
 +F1 -ot F2    F1 старее чем F2?
 +F1 -ef F2    F1 является жесткой ссылкой F2?
 +</​code>​
 +==== Сопоставляем файл с регулярным выражением ====
 +<​code>​
 +if [[ $file =~ ^[0-9]+\.jpg$ ]] ; then
 +      echo $file;
 +else    ​
 +      echo '​!'​ $file;
 +fi
 +</​code>​
 +
 +===== Операнды =====
 +  * && - логическое "​И"​
 +  * || - логичекое "​или"​
 +**Замечание** - чтобы использовать операнды,​ скобки должны быть двойные <​nowiki>​[[ ... ]]</​nowiki>​
 +Пример:​
 +<​code>​
 +if [ "​$1"​ != '​help'​ ] || ["​$1"​ != '​auto'​] || [ "​$1"​ != '​toftp'​ ] || [ "​$1"​ != '​tolocal'​ ] || [ "​$1"​ != ''​ ]
 +then
 + echo ""​
 + echo "​Неверный параметр $1"
 + exit 1
 +else
 + param=$1
 +fi;
 +</​code>​
linux/bash-if.txt · Последние изменения: 2021/02/11 09:20 (внешнее изменение)