Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Вопрос по BASH скриптам  (Прочитано 751 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн barmaley99

  • Автор темы
  • Участник
  • *
  • Сообщений: 118
    • Просмотр профиля
Вопрос по BASH скриптам
« : 10 Июня 2018, 19:37:26 »
Всем здравствуйте! Возникла необходимость разобраться с некоторыми bash скриптами, и мануалов накачал и гуглил но некоторые моменты остались неясными и нормального описания ненашел, значит к примеру встречаю в скриптах такие строчки:
if [ ! -x $var ]

if [ -x $directory/$cmd ]

if [ "$NEW_PWM" -gt "$OLD_PWM" ] || [ -z "$TEMP_AT_LAST_PWM_CHANGE" ]

так вот где я только не читал везде оператор if с последующими then elif fi описывается коротко, т.е. суть его работы
но что это за параметры внутри -x, -gt, -z внутри []? И где об этом можно почитать как можно более подробно?

Оффлайн Haron Prime

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 11313
  • Нетолерантный социопат
    • Просмотр профиля
Re: Вопрос по BASH скриптам
« Ответ #1 : 10 Июня 2018, 19:49:44 »
Код: (BASH) [Выделить]
-eq
# равно

if [ "$a" -eq "$b" ]

-ne
# не равно

if [ "$a" -ne "$b" ]

-gt
# больше

if [ "$a" -gt "$b" ]

-ge
# больше или равно

if [ "$a" -ge "$b" ]

-lt
# меньше

if [ "$a" -lt "$b" ]

-le
# меньше или равно

if [ "$a" -le "$b" ]

<
# меньше (внутри двойных круглых скобок )

(("$a" < "$b"))

<=
# меньше или равно (внутри двойных круглых скобок)

(("$a" <= "$b"))

>
# больше (внутри двойных круглых скобок)

(("$a" > "$b"))

>=
# больше или равно (внутри двойных круглых скобок)

(("$a" >= "$b"))

# сравнение строк

=
# равно

if [ "$a" = "$b" ]

==
# равно

if [ "$a" == "$b" ]

Синоним оператора =.

[[ $a == z* ]]    # истина, если $a начинается с символа "z" (сравнение по шаблону)
[[ $a == "z*" ]]  # истина, если $a равна z*

[ $a == z* ]      # имеют место подстановка имен файлов и разбиение на слова
[ "$a" == "z*" ]  # истина, если $a равна z*


!=
# не равно

if [ "$a" != "$b" ]

# Этот оператор используется при поиске по шаблону внутри [[ ... ]].

<
# меньше, в смысле величины ASCII-кодов

if [[ "$a" < "$b" ]]

if [ "$a" \< "$b" ]

# Обратите внимание! Символ "<" необходимо экранировать внутри [ ].

>
# больше, в смысле величины ASCII-кодов

if [[ "$a" > "$b" ]]

if [ "$a" \> "$b" ]

# Обратите внимание! Символ ">" необходимо экранировать внутри [ ].


-z
# строка "пустая", т.е. имеет нулевую длину

-n
# строка не "пустая".

-o or ||
# или

-a and &&
# и

# Оператор -n требует, чтобы строка была заключена в кавычки внутри квадратных скобок. Как правило, проверка строк, не заключенных в кавычки, оператором ! -z, или просто указание строки без кавычек внутри квадратных скобок, проходит нормально, однако это небезопасная, с точки зрения отказоустойчивости, практика. Всегда заключайте проверяемую строку в кавычки.

Пользователь добавил сообщение 10 Июня 2018, 19:52:20:
https://www.opennet.ru/docs/RUS/bash_scripting_guide/x2565.html
https://www.opennet.ru/docs/RUS/bash_scripting_guide/
« Последнее редактирование: 10 Июня 2018, 19:52:20 от Haron Prime »

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14037
  • Xubuntu 18.04
    • Просмотр профиля
Re: Вопрос по BASH скриптам
« Ответ #2 : 10 Июня 2018, 19:52:46 »
Это гуглом легко находится.

if [ ! -x $var ]

к примеру, означает "если файл из переменной $var не существует и не является исполняемым.

-gt это больше и т.д.

Мануалов в сети по bash - море.
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн barmaley99

  • Автор темы
  • Участник
  • *
  • Сообщений: 118
    • Просмотр профиля
Re: Вопрос по BASH скриптам
« Ответ #3 : 10 Июня 2018, 20:03:46 »
Всем спасибо, не туда смотрел, надо было смотреть описание оператора test  ;D

 

Страница сгенерирована за 0.048 секунд. Запросов: 23.