Ru-Board.club
← Вернуться в раздел «UNIX»

» Bash и логическое "ИЛИ"

Автор: Jaroldino
Дата сообщения: 07.07.2008 14:46
Мог бы кто на конкретном примере показать, как реализовать логическое ИЛИ на баше?
Вот у меня код

Код: if[[ $1 = "1" ]]; Then
# делаем что-то
fi
Автор: 01MDM
Дата сообщения: 07.07.2008 15:03
Jaroldino
Переменные $1 - $9 это значения переданные скрипту в качестве параметра и им нельзя присваивать новые значения. Используй == для сравнения или -eq
Автор: Jaroldino
Дата сообщения: 07.07.2008 17:44
Я знаю, что это за переменные. Вы не правильно поняли.
В зависимости от значения переменной (первого параметра $1) мне нужно, чтобы скрипт выполнил то или иное действие. Но бывает так, что некоторые действия могут отличаться незначительно, а могут быть одинаковыми при разных значениях параметра.
Например в качестве параметра передается имя: Аня, Петя, Вася.
то код "hello.sh -Aня "будет такого типа:
if [[ $1 = "Аня" ]]; then
echo Здравствуй дорогая $1
fi
Но по сути, не писать же для каждого отдельно такой же код О_О, логично будет вот так
if [[ $1 = "Аня" or $1 = "Света" or $1 = "Юля" ]]; then
echo Здравствуй дорогая $1
fi
# ну и так само для пацанов сделать...
Но по сути, не песать же для каждого отдельно такой же код О_О, логично будет вот так
if [[ $1 = "Вася" or $1 = "Саша" or $1 = "Коля" ]]; then
echo $1, дружбан, привет!
fi

Я, конечно, сильно утрирую, на самом деле скрипт немного другого плана. Но суть остаётся той же. Нужна функция "ИЛИ" (OR). ИЛИ первый параметр будет "такой" ИЛИ "такой", но в обоих случаях нужно выполнить одни и те же команды.
Автор: Almaz
Дата сообщения: 07.07.2008 17:49
Jaroldino
or = -o
and = -a

Добавлено:
В двойных брэкетах
or = ||
and = &&

Добавлено:
01MDM

Цитата:
Используй == для сравнения или -eq

-eq - сравнение целых
= - сравнение строк
== - синоним =

Добавлено:
http://tldp.org/LDP/abs/html/comparison-ops.html
Автор: Jaroldino
Дата сообщения: 07.07.2008 18:09
Фух Almaz, спасибо, расклинил . я совсем забыл про эти Сишные завороты (&& ++ || etc..)
Автор: sendmoreinfo
Дата сообщения: 07.07.2008 19:49
'== - синоним =' только в bash, в других шеллах это не работает. не надо так писать.

|| и && не то же самое, что -o и -a -- первое связывает разные команды в шелле, второе -- параметр test (а '[' -- это и есть test)

Страницы: 1

Предыдущая тема: Помогите выбрать операционную систему


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.