Условия в bash

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

Аватара пользователя
SwapON
Сообщения: 19
ОС: Arch linux

Условия в bash

Сообщение SwapON »

Пилю скрипт автоустановки ПО. В связи с немалым количеством подразделений и разными сетевыми ресурсами, необходимо немного повзаимодействовать с эникеем, который будет разворачивать это всё. Перед подключением сетевых дисков, необходимо спросить букву диска и если такая в условии имеется, прописываем в autofs соответствующий путь.

Код: Выделить всё

read -p 'Введите букву диска, который необходимо подключить: - ' drive
if [ $drive=='R' ] || [ $drive=='r' ];
then
	echo путь до сетевого размещения >> файл монтирования
	echo 'Подключён диск R'
else
	echo 'Нет такого диска'
fi
Так вот даже при одном условии, баш выводит то, что введено, то есть как-будто он не видит else.
Подскажите пжлста как правильно написать... :)
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 666
ОС: debian, fedora (i3-wm)

Re: Условия в bash

Сообщение olecya »

SwapON писал:
05.08.2021 04:06
if [ $drive=='R' ] || [ $drive=='r' ];

Shell

if [ "$drive" = R -o "$drive" = r ];
Или

Shell

if [[ "$drive" == [rR] ]];
Спасибо сказали:
Аватара пользователя
SwapON
Сообщения: 19
ОС: Arch linux

Re: Условия в bash

Сообщение SwapON »

Блин, пробелы... :doh: Благодарю...! Всё взлетело...!
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 666
ОС: debian, fedora (i3-wm)

Re: Условия в bash

Сообщение olecya »

SwapON писал:
05.08.2021 09:25
Блин, пробелы
Дело конечно вкуса, но переносимость страдает от использования двойного знака равно в одинарных скобках. Не критично конечно, просто я за модой слежу и не смешиваю стили :)

Еще пара вариантов для политпросвета. Первый появился в bash 4.0 (2009) раздел Parameter Expansion:

Код: Выделить всё

if [ "${drive,}" = r ];
Второй появился в версии bash 5.1 (2020):

Код: Выделить всё

if [ "${drive@L}" = r ];
Довольно интересный раздел некоторые вещи из него появились еще в версии bash 4.4 (2016)
LESS=+/Parameter\ transformation man bash

P.S. По количеству нажатий на клавиши - первый самый производительный :)
Спасибо сказали: