• VLMI - форум по обмену информацией. На форуме можете найти способы заработка, разнообразную информацию по интернет-безопасности, обмен знаниями, курсы/сливы.

    После регистрации будут доступны основные разделы.

    Контент форума создают пользователи, администрация за действия пользователей не несёт ответственности, отказ от ответственности. Так же перед использованием форума необходимо ознакомиться с правилами ресурса. Продолжая использовать ресурс вы соглашаетесь с правилами.
  • Подпишись на наш канал в Telegram для информации о актуальных зеркалах форума: https://t.me/vlmiclub

[bash][Linux]Как задать значение переменной в конструкции case, чтобы работала вне конструкции?

YustejnGordon

Положительный Отрицательный

YustejnGordon

Положительный Отрицательный
Местный
Сообщения
55
Реакции
235
0 руб.
Telegram
Уважаемые.

Пишу в bash скрипт. Надо чтобы в конструкции case в зависимости от введенного значения одной и той же переменной присваивалось уже определенное значение и использовалось вне этой конструкции.



read arch

case $arch in
1)

architecture="os=linux64" && echo "Linux-x32/x64...0k"
;;
2)

architecture="os=linux" && echo "Linux-i686...0k"
;;
e)
echo
"Установка прервана...Выход...2сек..." && sleep 2s;
exit
esac

В последствии значение переменной architecture должно подтягиваться в другую строку при помощи:
${architecture}

Но у меня нихуя, блять, не подтягивается.

Я так понимаю надо заранее задать эту переменную, чтобы case уже ей присваивал значение, но я так пробовал и все равно нихуя.
Короче в нете я не нашел ответ на свой вопрос. Почти сутки убил.
 

/.e7z

Резидент
Сообщения
179
Реакции
335
0 руб.
Jabber
Что должно быть объявлено в переменную "architecture"?
Строковое значение или полученное из данных uname -a ?
 

YustejnGordon

Положительный Отрицательный

YustejnGordon

Положительный Отрицательный
Местный
Сообщения
55
Реакции
235
0 руб.
Telegram
Что должно быть объявлено в переменную "architecture"?
Строковое значение или полученное из данных uname -a ?
Будет объявлено значение, в зависимости от выбора в case. Если вводишь "1", то в переменную должно быть объявлено "os=linux64". Если "2", то "os=linux".
Вот это я вообще не понял.
 

/.e7z

Резидент
Сообщения
179
Реакции
335
0 руб.
Jabber
Будет объявлено значение, в зависимости от выбора в case. Если вводишь "1", то в переменную должно быть объявлено "os=linux64". Если "2", то "os=linux".
Вот это я вообще не понял.

Создай третью переменную до выбора, а ей уже присвой значение после исполнения условия
 

YustejnGordon

Положительный Отрицательный

YustejnGordon

Положительный Отрицательный
Местный
Сообщения
55
Реакции
235
0 руб.
Telegram
Создай третью переменную до выбора, а ей уже присвой значение после исполнения условия
Не присваивается ей значение. В нете не могу найти примеров присвоения значения, кроме как учебника по bash. По конструкциям которые там, типа ${architecture:-linux64} при условии, что ранее architecture="", т.е. имеет пустое значение, подстановки не происходит.
 

/.e7z

Резидент
Сообщения
179
Реакции
335
0 руб.
Jabber
Не присваивается ей значение. В нете не могу найти примеров присвоения значения, кроме как учебника по bash. По конструкциям которые там, типа ${architecture:-linux64} при условии, что ранее architecture="", т.е. имеет пустое значение, подстановки не происходит.

Код:
#!/bin/bash

read -n 1 arch

case $arch in
1)
architecture="os=linux64" && echo "Linux-x32/x64...0k"
;;
2)
architecture="os=linux" && echo "Linux-i686...0k"
;;
e)
echo "Установка прервана...Выход...2сек..." && sleep 2s;
exit
esac

Конструкция изначально работает при передаче переменной, т.е. непосредственно в коде менять ничего не надо
 

YustejnGordon

Положительный Отрицательный

YustejnGordon

Положительный Отрицательный
Местный
Сообщения
55
Реакции
235
0 руб.
Telegram
Код:
read -n 1 arch

case $arch in
1)
architecture="os=linux64" && echo "Linux-x32/x64...0k"
;;
2)
architecture="os=linux" && echo "Linux-i686...0k"
;;
e)
echo "Установка прервана...Выход...2сек..." && sleep 2s;
exit
esac

Конструкция изначально работает при передаче переменной, т.е. непосредственно в коде менять ничего не надо
Ты можешь пояснить первую строку?
UPD. Блин, я слишком быстро отписал. Я все равно не понимаю, что делает первая строка.
 

/.e7z

Резидент
Сообщения
179
Реакции
335
0 руб.
Jabber
Ты можешь пояснить первую строку?
UPD. Блин, я слишком быстро отписал. Я все равно не понимаю, что делает первая строка.


read -n 1 arch , проверяет только первый введенный символ и присваивает его $arch
 

YustejnGordon

Положительный Отрицательный

YustejnGordon

Положительный Отрицательный
Местный
Сообщения
55
Реакции
235
0 руб.
Telegram

/.e7z

Резидент
Сообщения
179
Реакции
335
0 руб.
Jabber
Так и как мне при помощи case задать переменную?

Она будет задана напрямую в read, а read присвоит ее $arch, которую и считывает case,
который в свою очередь задает переменной $architecture новое значение и выходит из условия
Пара минут, проверю выполнение и отпишу

Код:
#!/bin/bash

read -n 1 arch

case $arch in
1)
architecture="os=linux64" && echo "Linux-x32/x64...0k"
;;
2)
architecture="os=linux" && echo "Linux-i686...0k"
;;
e)
echo "Установка прервана...Выход...2сек..." && sleep 2s;
exit
esac
echo $architecture

Вывод:
SNIMOK.png
, как ответ указал: 1, при 2 и e так-же работает
 

YustejnGordon

Положительный Отрицательный

YustejnGordon

Положительный Отрицательный
Местный
Сообщения
55
Реакции
235
0 руб.
Telegram
Она будет задана напрямую в read, а read присвоит ее $arch, которую и считывает case,
который в свою очередь задает переменной $architecture новое значение и выходит из условия
Пара минут, проверю выполнение и отпишу

Код:
#!/bin/bash

read -n 1 arch

case $arch in
1)
architecture="os=linux64" && echo "Linux-x32/x64...0k"
;;
2)
architecture="os=linux" && echo "Linux-i686...0k"
;;
e)
echo "Установка прервана...Выход...2сек..." && sleep 2s;
exit
esac
echo $architecture

Вывод:
SNIMOK.png
, как ответ указал: 1, при 2 и e так-же работает
БЛЯ.
Бляяяяяя.

Странная параша. Твой скрипт у меня на ура работает. А мой, который, сука, точно такой же. Нихуя не работает. Чет я приуныл. Ладно, отвлекусь пока. Кажется я понял в чем причина. Отпишу потом тут.
 

YustejnGordon

Положительный Отрицательный

YustejnGordon

Положительный Отрицательный
Местный
Сообщения
55
Реакции
235
0 руб.
Telegram
БЛЯ.
Бляяяяяя.
Странная параша. Твой скрипт у меня на ура работает. А мой, который, сука, точно такой же. Нихуя не работает. Чет я приуныл. Ладно, отвлекусь пока. Кажется я понял в чем причина. Отпишу потом тут.
Дело было в tput sgr0. Я к каждой строке его добавлял после цветного шрифта. На хабре человек один написал, что мол так можно быстро резать цвет шрифта в обычный. Ну я и сделал так. Оказалось, что он мудак. Сейчас по другому принципу обесцвечиваю шрифт. И да, скрипт теперь работает. Осталось часа 2-3 и все будет готово.
Спасибо за помощь, Лис :)
 

YustejnGordon

Положительный Отрицательный

YustejnGordon

Положительный Отрицательный
Местный
Сообщения
55
Реакции
235
0 руб.
Telegram
Закройте тему, пожалуйста, проблема решена.
 
Сверху Снизу