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

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

20.10.2011, 15:21. Показов 1450. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru