Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Shell scripts (sh, bash, zsh, tcsh)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8

Открыть новую тему     Написать ответ в эту тему

alyent



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обратите, пожалуйста, внимание, что существует более активная на настоящий момент смежная ветка.

Там же можно ознакомится со списком примечательной литературы по теме.
Первый пост этой ветки имел вид...

Всего записей: 1087 | Зарегистр. 09-03-2002 | Отправлено: 10:04 02-02-2003 | Исправлено: ASE_DAG, 19:08 12-07-2013
f_serg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sunduk4

Цитата:
как в данном случае поступить?

Может в "program" вместо $1 использовать $* ? Тоже переменная, содержит все параметры вместе с пробелами...

----------
Serg

Всего записей: 1706 | Зарегистр. 11-09-2002 | Отправлено: 09:35 22-11-2006
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f_serg
Я думаю что тогда не будет понятно что есть что, например если  $* содержит "p1 p2 p3 p4 p5" то переданное могло значить и 5 разных параметров и 1 параметр состоящий из 5 частей разделенных пробелами. Непонятно будет как их компоновать.

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 21:36 22-11-2006
sunduk4

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FuzzyLogic
f_serg
Опишу тогда задачу.
Имеется два приложения на C и скрипт bash, который дергает эти приложения, плюс выполняет еще кучу всякого функционала. Требуется сделать дополнительный скрипт, который на входе будет принимать два параметра - название операции и результат ее выполнения и вести запись логов в файлик и в БД. Результатом может быть и эксепшн какой-либо сторонней программы. Сам скрипт есть, не получается параметры в него по-человечески передать..

Всего записей: 177 | Зарегистр. 03-04-2004 | Отправлено: 06:16 23-11-2006
f_serg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sunduk4

Цитата:
который на входе будет принимать два параметра

Уже лучше.
Я бы все-таки предложил так:
Первым передавать параметр без пробелов (такое возможно?), а вторым - с пробелами.
Тогда:

Код:
#!/bin/bash
 
first_param=$1
shift
second_param=$*
 
....

 
Как-то так.
 
Если же оба параметра содержат пробелы, то как советовал FuzzyLogic.


----------
Serg

Всего записей: 1706 | Зарегистр. 11-09-2002 | Отправлено: 13:56 23-11-2006
sunduk4

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f_serg
Хм.. Я думаю, что получится такой вариант, т.к. первый параметр задаю сам, в крайнем случае пробелы можно заменить на что-нибудь..
Спасибо, буду пробовать.

Всего записей: 177 | Зарегистр. 03-04-2004 | Отправлено: 06:48 24-11-2006
f_serg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sunduk4
Что-то я не понял.
Файл r.sh:

Код:
#!/bin/bash
 
VAR1="1 1 1"
VAR2="2 2 2"
 
./t.sh "$VAR1" "$VAR2"

Файл t.sh:

Код:
#!/bin/bash
 
echo Params: $#
echo $1
echo $2

 
Результат запуска ./r.sh

Цитата:
$ ./r.sh
2
1 1 1
2 2 2
Press any key to continue...

 
Все и так работает.

----------
Serg

Всего записей: 1706 | Зарегистр. 11-09-2002 | Отправлено: 08:36 24-11-2006
sunduk4

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f_serg
все чуть сложнее...
 
e_mess=`sample_program $param1 $param2 2>&1`
./writelog "Execute sample_program param1-""$param1"", param2-""$param2" "$e_mess"

Всего записей: 177 | Зарегистр. 03-04-2004 | Отправлено: 10:01 24-11-2006
RealDemyan



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хотелось бы узнать где можно взять учебник или справочник по bash. Многомудрые шуточки про 'man bash' если не трудно попридержите. Если такую редкую вещь найти трудно, посоветуйте как строчные буквы в переменной переделать в заглавные. Буду признателен...

Всего записей: 38 | Зарегистр. 01-12-2006 | Отправлено: 18:18 15-12-2006
KADABRA



Великий покусатель
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RealDemyan

Цитата:
посоветуйте как строчные буквы в переменной переделать в заглавные. Буду признателен...

echo "test" | tr [a-z] [A-Z]
 
Добавлено:

Цитата:
Многомудрые шуточки про 'man bash' если не трудно попридержите.

А чем man не понравился?

Всего записей: 1718 | Зарегистр. 14-07-2003 | Отправлено: 00:09 16-12-2006
RealDemyan



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ага, благодарю!
Мне нужно было в переменную, поэтому вот:
 
k=$(echo $k|tr [a-z] [A-Z])
 
А man не поможет, если не знаешь какой командой пользоваться. Не читать же все ... страниц. Вот откуда бы я знал, что это "tr"? Тут даже --help не спасет.

Всего записей: 38 | Зарегистр. 01-12-2006 | Отправлено: 14:00 16-12-2006
f_serg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RealDemyan

Цитата:
А man не поможет, если не знаешь какой командой пользоваться.

А причем тут bash? tr - отдельная утилита, запускается из любого шелла. Это тебе надо искать что-то типа "Справочник команд UNIX/Linux".

----------
Serg

Всего записей: 1706 | Зарегистр. 11-09-2002 | Отправлено: 09:29 18-12-2006
Iceman82



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RealDemyan

Цитата:
Хотелось бы узнать где можно взять учебник или справочник по bash.

 
Очень советую - Advanced Bash-Scripting Guide (http://gazette.linux.ru.net/rus/articles/abs-guide/index.html), а из книг - Девид Тейнсли
"Linux и Unix программирование в SHELL"

Всего записей: 48 | Зарегистр. 10-02-2005 | Отправлено: 19:10 24-12-2006
RaZer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как с помощью getopts можно распарсить (и можно ли вообще?)
несколько параметров для одного флага.
Тоесть, например имеем: some_cmd -a b с d -e f g
Тогда скрипте нужно получить переменные:
A="b c d"
E="f g"
Количество параметров заранее неизвестно.

----------
Меня постоянно преследуют умные мысли, но я быстреее!

Всего записей: 273 | Зарегистр. 28-08-2004 | Отправлено: 22:52 07-02-2007
f_serg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RaZer

Цитата:
несколько параметров для одного флага.

Нельзя...

Цитата:
Тогда скрипте нужно получить переменные:
A="b c d"
E="f g"

Тогда надо запускать:
some_cmd -a 'b с d' -e 'f g'

----------
Serg

Всего записей: 1706 | Зарегистр. 11-09-2002 | Отправлено: 08:30 08-02-2007
RaZer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f_serg

Цитата:
Тогда надо запускать:  
some_cmd -a 'b с d' -e 'f g'

 
Это я знаю и сейчас так и делаю. Но если при етом в одном из параметров просткакивает пробел, то он разбивается на 2 части.
Тоесть если нужно some_cmd -a 'b' 'с' 'd f' -e 'f g', то при твоей записи получится еще один параметр 'f' вместо 'd f'.
 
 
Тогда вопрос другой будет ли пробел считаться разделителем, если его заэкранировать кавычками: some_cmd -a 'b с "d f"' -e 'f g'?


----------
Меня постоянно преследуют умные мысли, но я быстреее!

Всего записей: 273 | Зарегистр. 28-08-2004 | Отправлено: 10:47 08-02-2007
f_serg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RaZer
Есть такая еще мысль. Запускать:
some_cmd -a b -a c -a d -e f -e g
Ну, и при разборе параметров делать что-то типа:
A="$A $OPTARG"

----------
Serg

Всего записей: 1706 | Зарегистр. 11-09-2002 | Отправлено: 09:33 09-02-2007
RaZer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f_serg
Я уже так и сделал.
Но все-равно спасибо.

----------
Меня постоянно преследуют умные мысли, но я быстреее!

Всего записей: 273 | Зарегистр. 28-08-2004 | Отправлено: 03:23 10-02-2007
GrHnd



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите хорошую книжку по Bash shell.

Всего записей: 865 | Зарегистр. 01-04-2005 | Отправлено: 17:35 13-02-2007
KADABRA



Великий покусатель
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GrHnd

Цитата:
Подскажите хорошую книжку по Bash shell.

man bash
http://www.gnu.org/software/bash/manual/bashref.html

----------
Это не подпись.

Всего записей: 1718 | Зарегистр. 14-07-2003 | Отправлено: 19:49 13-02-2007
GrHnd



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Iceman82
KADABRA
Спасибо.

Всего записей: 865 | Зарегистр. 01-04-2005 | Отправлено: 10:56 14-02-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Shell scripts (sh, bash, zsh, tcsh)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru