Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2

bash. встраиваемые функции. или иной способ.

20.10.2011, 15:21. Показов 1461. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет.

на примере прошлого кода, пытаюсь использовать встроенные условия.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/sh
 
 
testfunc() {
    echo "N = $#"
    echo "1 = $1"
    echo "2 = $2"
    echo "3 = $3"
    echo "4 = $4"
    echo "5 = $5"
    echo "6 = $6"
    echo "7 = $7"
    echo "8 = $8"
    echo "9 = $9"
    echo "10 = $10"
    echo "11 = $11"
}
 
var1="v1 v"
var2="v2 v"
var3="v3 v"
var4="v4 v"
var5="v5 v"
var6="v6 v"
var7="v7 v"
var8="v8 v"
var9="v9 v"
var10="v10 v"
var11="v11 v"
 
testfunc \
    if [[ ! -z "${var1}" ]]; then "-C ${var1}" else "-j ${var1}" fi \
    if [[ ! -z "${var2}" ]]; then "-C ${var2}" fi \
    "${var3}" \
    "${var4}" \
    "${var5}" \
    "${var6}" \
    "${var7}" \
    "${var8}" \
    "${var9}" \
    "${var10}" \
    "${var11}"
http://ideone.com/AQ9Ln

или такое невозможно?


спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.10.2011, 15:21
Ответы с готовыми решениями:

StrToFloat или иной способ сделать из float
Каким образом из float сделать не строку, а именно float с 2-я знаками после запятой ? Суть проблемы: Читаю из базы числа...

Отображение списка листов в столбик (или иной способ навигации удобной)
Доброго дня. Собственно, сабж отображен в заголовке. Буду благодарен любому совету, и вообще, возможно ли это? Проблема в чем - у...

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

6
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
20.10.2011, 16:47
Если я правильно угадал вашу хотелку то:
Bash
1
    `if [[ ! -z "${var1}" ]]; then echo "-C ${var1}"; else echo "-j ${var1}"; fi` \
1
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.11.2011, 13:08  [ТС]
g_u_e_s_t, как бы и оно, но и как бы нет.
смори:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/sh
 
 
testfunc() {
    echo "N = $#"
    echo "1 = ${1}"
    echo "2 = ${2}"
    echo "3 = ${3}"
    echo "4 = ${4}"
    echo "5 = ${5}"
    echo "6 = ${6}"
    echo "7 = ${7}"
    echo "8 = ${8}"
    echo "9 = ${9}"
    echo "10 = ${10}"
    echo "11 = ${11}"
}
 
var1="v1 v"
var2="v2 v"
var3="v3 v"
var4="v4 v"
var5="v5 v"
var6="v6 v"
var7="v7 v"
var8="v8 v"
var9="v9 v"
var10="v10 v"
var11="v11 v"
 
testfunc \
    `if [[ ! -z "${var1}" ]]; then echo "-C ${var1}"; else echo "-j ${var1}"; fi` \ # <<<<<<<<<<<<<
    `if [[ ! -z "${var2}" ]]; then "-C ${var2}"; fi` \
    "${var3}" \
    "${var4}" \
    "${var5}" \
    "${var6}" \
    "${var7}" \
    "${var8}" \
    "${var9}" \
    "${var10}" \
    "${var11}"
http://ideone.com/3Wqi8

вывод:
N = 12
1 = -C
2 = v1
3 = v
4 = v3 v
5 = v4 v
6 = v5 v
7 = v6 v
8 = v7 v
9 = v8 v
10 = v9 v
11 = v10 v
еще и ошибка:
prog.sh: line 32: -C v2 v: command not found
32ую строку отметил.

что в выводе не так: первый аргумент должен быть "-C v1 v". а он поделился и на два последующих.
как быть?
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
24.11.2011, 14:23
Цитата Сообщение от niXman Посмотреть сообщение
что в выводе не так: первый аргумент должен быть "-C v1 v". а он поделился и на два последующих.
как быть?
Квотить, конечно. Извините, нет времени проверять - пробуйте echo "\"-C ${var1}\"" и подобное. Ошибка - вставить echo.

Не по теме:

Еще раз сорри, времени на форум нет.

1
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.11.2011, 14:29  [ТС]
в общем сделал.. ошибка пропала, но аргументы все равно разделяются.
как будет время, глянь плиз http://ideone.com/5JGK5
не горит.
спасибо.
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
24.11.2011, 16:35
niXman, попробуйте так:
Bash
1
2
testfunc \
"`if [ -n "${var1}" ]; then echo \"-C ${var1}\"; else echo \"-j ${var1}\"; fi`" \
не проверял, если не заработает напишите, вечером дома поковыряюсь...
1
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.11.2011, 16:39  [ТС]
g_u_e_s_t, просто обернул строки в двойные кавычки, и заработало.
Bash
1
"`if [[ ! -z "${var1}" ]]; then echo \""-C ${var1}\""; else echo \""-j ${var1}\""; fi`"
Добавлено через 9 секунд
спасибо

Добавлено через 1 минуту
http://ideone.com/DpOU8
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.11.2011, 16:39
Помогаю со студенческими работами здесь

Встраиваемые функции
Вот прочитал в учебнике: Использование функций, наряду с сокращением размера памяти, занимаемой кодом, увеличивает время выполнения...

Какой способ не является правильными для возврата значений из функций в bash
Какой способ не является правильными для возврата значений из функций в bash. 1 echo-печать в stdout, который будет перехвачен...

При вводе того или иного пароля открывать тот или иной txt-файл
Добрый вечер. Нужно написать программу, которая будет при вводе того или иного пароля открывать тот или иной .txt файл. Например: ...

От чего зависит корректная работа той или иной операционной системы на том или ином оборудовании?
собственно кругозор расширяется, всё выше и шире углубляюсь в системное администрирование, поэтому возник такой вопрос. Даже не знаю туда...

Свойство DBGrid, или иной вариант?
Доброго времени суток, помогите разобраться с компонентой DBGrid, подключил я к ней базу Access, и все она отлично отображает, только не...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru