0 / 0 / 0
Регистрация: 23.10.2021
Сообщений: 62
1

Глобальный флаг

28.03.2022, 21:52. Показов 805. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, пишу несколько скриптов для автоматизации тестирования своих лабораторных в университете. И столкнулся с проблемой такого типа: если поднят такой то глобальный флаг, то мы запускаем наш исполняемый файл под оболочкой утилиты valgrind. Проблема в том, что я не очень понимаю, что значит поднят глобальный флаг, хотя преподаватель говорил, что это тип переменная окружения, но я все равно не очень понимаю как реализовать взаимодействие такое. Подскажите пожалуйста. Если вам не очень понятно, что я имел в виду, то скажите, я скину сюда всю лабу, чтобы стало понятно о чем идет речь. Заранее всем спасибо)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2022, 21:52
Ответы с готовыми решениями:

Глобальный прокси на Ubuntu 18.04
Привет. Пишу бота для telegram, при тестировании на локальной машине столкнулся со следующей...

Создание глобальный FTP сервера на бытовом железе
Подскажите пожалуйста, нужен глобальный FTP сервер с возможность авторизации для клиентов. Хочу...

Apache на Ubuntu 14.4 снять DF флаг в заголовках IP сетевых пакетов
Доброго времени суток! Сильно не пинайте - я не волшебник, я ciscoвед, есть только что...

Глобальный импортируемый флаг для завершения цикла не работает
Файл в котором определяется stop_flag, потом становится глобальным и изменяется в классе...

19
4284 / 964 / 138
Регистрация: 29.01.2013
Сообщений: 5,666
29.03.2022, 09:50 2
nikitalystsev, вы знаете, что такое переменная окружения?
0
0 / 0 / 0
Регистрация: 23.10.2021
Сообщений: 62
29.03.2022, 15:26  [ТС] 3
Да, это средство для сохранения информации, которая используется
различными приложениями (в том числе и самой оболочкой)
0
4284 / 964 / 138
Регистрация: 29.01.2013
Сообщений: 5,666
29.03.2022, 15:31 4
nikitalystsev, точно и строго по учебнику. Вы знаете, как создать переменную окружения из скрипта?
0
0 / 0 / 0
Регистрация: 23.10.2021
Сообщений: 62
29.03.2022, 15:40  [ТС] 5
Я знаю как создать ее в командной оболочке, просто: название_переменной=значение_переменной
И эта переменная существовала бы только в текущем сеансе командной оболочки.
А вот как создать из скрипта, я кажется не знаю...
0
4284 / 964 / 138
Регистрация: 29.01.2013
Сообщений: 5,666
29.03.2022, 16:00 6
nikitalystsev, точно так же. Вот тут можно почитать про переменные окружения в общем. В скрипте применять так же, как и в консоли.
0
0 / 0 / 0
Регистрация: 23.10.2021
Сообщений: 62
29.03.2022, 16:12  [ТС] 7
А в итоге то что значит поднят глобальный флаг?
Просто проверка на то, что переменная существует?
0
4284 / 964 / 138
Регистрация: 29.01.2013
Сообщений: 5,666
29.03.2022, 16:17 8
nikitalystsev, флагами в программировании обычно называют переменную логического типа, которая принимает значение или "истина" или "ложь", оно же "true" or "false", оно же "1" или "0". Т.е., как я понимаю, требуется создать переменную окружения и присвоить ей "1", раз флаг поднят.
0
0 / 0 / 0
Регистрация: 23.10.2021
Сообщений: 62
29.03.2022, 16:20  [ТС] 9
Я извиняюсь, но можно хотя бы кусочек кода с созданием переменной окружения попросить продемонстрировать пожалуйста?
0
4284 / 964 / 138
Регистрация: 29.01.2013
Сообщений: 5,666
29.03.2022, 16:27 10
nikitalystsev, ну вот тут посмотрите...
0
0 / 0 / 0
Регистрация: 23.10.2021
Сообщений: 62
29.03.2022, 16:53  [ТС] 11
Спасибо вам огромное, что помогли мне, я вам очень благодарен, но у меня есть последний вопрос, как получить значение переменной окружения? Вот чтобы обратиться к значению переменной обычно пишут $имя_переменной. Я так написал в скрипте, но как то такое обращение не работает.
0
4284 / 964 / 138
Регистрация: 29.01.2013
Сообщений: 5,666
29.03.2022, 17:03 12
nikitalystsev, в последней ссылке это точно есть. Я специально искал. Перечитайте.
0
0 / 0 / 0
Регистрация: 23.10.2021
Сообщений: 62
29.03.2022, 17:21  [ТС] 13
Извините еще раз, я понял как получать значение переменной окружения, но мне непонятно следующее поведение. Если не трудно, можете объяснить пожалуйста, почему когда я присваиваю и экспортирую переменную окружения со значением единицы, буть то в кавычках она или без, то скрипт ее не видит. Если что, то проверяю наличие переменной окружения с помощью проверки следующего вида:
Bash
1
2
3
4
5
if [ -v "${USE_VALGRIND}" ]; then
    echo "переменная окружения есть и ее значение равно 1"
else
    echo "переменной окружения нет"
fi
Bash
1
2
3
4
5
6
7
8
9
переменная окружения есть и ее значение равно 1
nikita@nikital:~/lab_02_cprog/lab_02_03_02/func_tests/scripts$ export USE_VALGRIND="1"
nikita@nikital:~/lab_02_cprog/lab_02_03_02/func_tests/scripts$ ./environment_variables.sh 
переменной окружения нет
nikita@nikital:~/lab_02_cprog/lab_02_03_02/func_tests/scripts$ export USE_VALGRIND="0"
nikita@nikital:~/lab_02_cprog/lab_02_03_02/func_tests/scripts$ ./environment_variables.sh 
переменная окружения есть и ее значение равно 1
nikita@nikital:~/lab_02_cprog/lab_02_03_02/func_tests/scripts$ 
nikita@nikital:~/lab_02_cprog/lab_02_03_02/func_tests/scripts$
0
4284 / 964 / 138
Регистрация: 29.01.2013
Сообщений: 5,666
29.03.2022, 17:25 14
nikitalystsev, увы, мои познания в Bash достаточно скудны. Тут надо кто-то куда более подкованный. Например, nezabudka.
0
0 / 0 / 0
Регистрация: 23.10.2021
Сообщений: 62
29.03.2022, 17:27  [ТС] 15
А как связаться с ним (ней)?
0
4284 / 964 / 138
Регистрация: 29.01.2013
Сообщений: 5,666
29.03.2022, 17:41 16
nikitalystsev, ждать, надеяться и верить))
0
896 / 268 / 54
Регистрация: 30.08.2017
Сообщений: 1,771
29.03.2022, 21:27 17
Всё очень просто
-v в операторе if проверятет...
короч кусочек man bash
-v varname
True if the shell variable varname is set (has been assigned a value).

Обратите внимание - -v varname

Т.е.
Bash
1
2
3
4
5
if [ -v USE_VALGRIND ]; then
    echo "переменная окружения есть и ее значение равно 1"
else
    echo "переменной окружения нет"
fi
И будет Вам счастье.
Нюанс, тут не проверяется значение, важен сам факт наличия глобальной переменной, значение можно присвоить любое.
0
4284 / 964 / 138
Регистрация: 29.01.2013
Сообщений: 5,666
29.03.2022, 21:29 18
Цитата Сообщение от _sg2 Посмотреть сообщение
has been assigned a value
т.е. не важно что там будет, 1, или "тринитротолуол", всё равно будет true?
0
896 / 268 / 54
Регистрация: 30.08.2017
Сообщений: 1,771
29.03.2022, 21:32 19
Всё равно. Переменная окружения есть, а есть она при выполнении 2-х условий - она объявлена через export и ей присвоено ЛЮБОЕ значение.
убить такую переменную:
Bash
1
unset USE_VALGRIND
0
Эксперт NIX
3330 / 748 / 252
Регистрация: 28.06.2015
Сообщений: 1,543
Записей в блоге: 16
29.03.2022, 21:55 20
Код
help test
-v VAR True if the shell variable VAR is set.
То есть имя переменной без знака доллара. Переменная установлена с любым значением и даже без:
Код
export USE_VALGRIND=
export USE_VALGRIND=0
export USE_VALGRIND=1
export USE_VALGRIND=string
Bash
1
2
3
4
5
if [ -v USE_VALGRIND ]; then
    echo переменная окружения есть
else
    echo переменной окружения нет
fi
Код
./environment_variables.sh
переменная окружения есть
Код
export -n USE_VALGRIND #unset USE_VALGRIND
./environment_variables.sh
переменной окружения нет
Bash
1
2
3
4
5
6
7
8
9
10
if [ -v USE_VALGRIND ]; then
    echo -n переменная окружения есть
    if (( USE_VALGRIND )); then
        echo  \ и флаг установлен
    else
        echo \ и флаг сброшен
    fi
else
    echo переменной окружения нет
fi
В оболочке bash все переменные имеют только строковое значение.
https://www.cyberforum.ru/blog... g5492.html
Только от вас зависит проверку на какой флаг вы выберете:
Код
if [ "$USE_VALGRIND" -eq 1 ]; then
if [ "$USE_VALGRIND" ]; then
Но в вашем случае значение флага это скорее всего опция утилиты valgrind, а это:
Код
if [ -n "$USE_VALGRIND" ]; then
2
29.03.2022, 21:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2022, 21:55
Помогаю со студенческими работами здесь

Почему если флаг состояния потока eof поднят, то флаг good опущен?
Почему если флаг состояния потока eof поднят, то флаг good опущен? Это нонсенс, друзья. Здесь...

Нарисовать на экране дисплея флаг РФ, Японский флаг
Нарисовать на экране дисплея флаг РФ, Японский флаг 300*200px Добавлено через 22 часа 20 минут ...

Глобальный Массив GET
<?php $id = strip_tags($_GET); switch($id){ case 'page1': include 'page1.php'; break; ...

Глобальный вектор
Есть у меня приложение с формой Win Forms(CLR вроде) Ну у меня весь код соответственно в .h файле....

Глобальный класс
Суть проблемы в следующем: имеются некоторые данные, настройки пользователя, которые необходимы во...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru