Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Shell scripts (sh, bash, zsh, tcsh)

Автор: Demetrio
Дата сообщения: 01.07.2004 20:49
http://www-zeuthen.desy.de/computing/services/software/newlist/documentation/shells/zsh/zsh_14.html#SEC46

может тут чего полезного найдёшь.


Цитата:
если кому интересно, могу перечислить почему

интересно
Автор: alyent
Дата сообщения: 01.07.2004 21:14
Хех, теперь можно передвигаться не только побуквенно, но и прыгать по словам.


Код:
bindkey '\e[3~' delete-char # del
bindkey '\e[1~' beginning-of-line # home
bindkey '\e[4~' end-of-line # end

bindkey '\C-[Oc' forward-word # C-right
bindkey '\C-[Od' backward-word # C-left
Автор: alyent
Дата сообщения: 02.07.2004 11:05
Пытаюсь сделать из zsh почти полноценный текстровый редактор.
Вот только проблемы с control+del

Код: bindkey '\C-[[3^' delete-word
Автор: Sea Eagle
Дата сообщения: 07.07.2004 10:59
alyent
Хм... инетерстно... как и все новое....
Хотя я сам переходить на него наверное не буду, т.к. надобности нет, а все, что нужно пока могу сделать на bash'е или Perl'е... тем более, что они ставяться вместе с OS (FreeBSD)
Автор: Infection
Дата сообщения: 02.04.2005 16:16
(
sleep 1
echo "login\r\n"
sleep 1
echo "password\r\n"
sleep 1
echo "\r\n"
sleep 2
echo "send_command\r\n";
sleep 1
-------------------------------------
echo "\004"
echo "\r\n"
-------------------------------------
echo "exit;\r\n";
) | telnet 192.168.5.57 8000


как сделать так, чтобы на месте
-------------------------------------
echo "\004"
read echo "\r\n"
-------------------------------------

чтобы было следующее:
посылаем команду echo echo "\004" и ответ от команды засунуть в переменную, затем проверить на наличие подстроки в этой переменной и при ее отсутсвии завернуться в цикл и отрабатывать этот блок
-------------------------------------
echo "\004"
echo "\r\n"
-------------------------------------

пока не найдется нужна строка в ответе от команды echo "\004" ?
естественно поставить sleep


Добавлено:
ща почитал, и вижу сумбур

вообщем в определенном месте надо получить ответ от telnet и засунуть в переменную

Добавлено:
или проще, все что исходит от STDOUT заносить в переменную, при чем только в определенном месте скрипта, а в остальное время в стандартный поток или /dev/null, не важно

вопрос как?
Автор: Iceman82
Дата сообщения: 12.06.2006 15:02
Может ли кто-нибудь объяснить, почему строка

Код:
NOW_DATE=`eval "date -R --date='$1 days ago'"`
Автор: sunduk4
Дата сообщения: 20.11.2006 07:06
Подскажите, как в скрипт bash можно передать параметром строку, содержащую пробелы? Bash воспринимает ее как несколько параметров..
Автор: FuzzyLogic
Дата сообщения: 20.11.2006 17:48
Надо заключить параметр в кавычки когда запускаешь скрипт, впрочем это верно не только для скрипта но и для чего угодно, и не только для *nix но и для win

Код:
./program "long parameter"
Автор: sunduk4
Дата сообщения: 22.11.2006 05:58
FuzzyLogic
Про кавычки я знаю, заминка в том, что строка параметра собирается из разных мест и в скрипт передается переменной.
./program "$STRING_VAR"
как в данном случае поступить?
Автор: FuzzyLogic
Дата сообщения: 22.11.2006 08:21
Собирать параметры вместе с кавычками, вроде того
$STRING_VAR="\"$PARAM1\" \"PARAM2\" \"PARAM3\""
и туда его...
Автор: f_serg
Дата сообщения: 22.11.2006 08:35
sunduk4

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

Может в "program" вместо $1 использовать $* ? Тоже переменная, содержит все параметры вместе с пробелами...
Автор: FuzzyLogic
Дата сообщения: 22.11.2006 20:36
f_serg
Я думаю что тогда не будет понятно что есть что, например если $* содержит "p1 p2 p3 p4 p5" то переданное могло значить и 5 разных параметров и 1 параметр состоящий из 5 частей разделенных пробелами. Непонятно будет как их компоновать.
Автор: sunduk4
Дата сообщения: 23.11.2006 05:16
FuzzyLogic
f_serg
Опишу тогда задачу.
Имеется два приложения на C и скрипт bash, который дергает эти приложения, плюс выполняет еще кучу всякого функционала. Требуется сделать дополнительный скрипт, который на входе будет принимать два параметра - название операции и результат ее выполнения и вести запись логов в файлик и в БД. Результатом может быть и эксепшн какой-либо сторонней программы. Сам скрипт есть, не получается параметры в него по-человечески передать..
Автор: f_serg
Дата сообщения: 23.11.2006 12:56
sunduk4

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

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

Код: #!/bin/bash

first_param=$1
shift
second_param=$*

....
Автор: sunduk4
Дата сообщения: 24.11.2006 05:48
f_serg
Хм.. Я думаю, что получится такой вариант, т.к. первый параметр задаю сам, в крайнем случае пробелы можно заменить на что-нибудь..
Спасибо, буду пробовать.
Автор: f_serg
Дата сообщения: 24.11.2006 07:36
sunduk4
Что-то я не понял.
Файл r.sh:

Код: #!/bin/bash

VAR1="1 1 1"
VAR2="2 2 2"

./t.sh "$VAR1" "$VAR2"
Автор: sunduk4
Дата сообщения: 24.11.2006 09:01
f_serg
все чуть сложнее...

e_mess=`sample_program $param1 $param2 2>&1`
./writelog "Execute sample_program param1-""$param1"", param2-""$param2" "$e_mess"
Автор: RealDemyan
Дата сообщения: 15.12.2006 17:18
Хотелось бы узнать где можно взять учебник или справочник по bash. Многомудрые шуточки про 'man bash' если не трудно попридержите. Если такую редкую вещь найти трудно, посоветуйте как строчные буквы в переменной переделать в заглавные. Буду признателен...
Автор: KADABRA
Дата сообщения: 15.12.2006 23:09
RealDemyan

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

echo "test" | tr [a-z] [A-Z]

Добавлено:

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

А чем man не понравился?
Автор: RealDemyan
Дата сообщения: 16.12.2006 13:00
Ага, благодарю!
Мне нужно было в переменную, поэтому вот:

k=$(echo $k|tr [a-z] [A-Z])

А man не поможет, если не знаешь какой командой пользоваться. Не читать же все ... страниц. Вот откуда бы я знал, что это "tr"? Тут даже --help не спасет.
Автор: f_serg
Дата сообщения: 18.12.2006 08:29
RealDemyan

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

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

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


Очень советую - Advanced Bash-Scripting Guide (http://gazette.linux.ru.net/rus/articles/abs-guide/index.html), а из книг - Девид Тейнсли
"Linux и Unix программирование в SHELL"
Автор: RaZer
Дата сообщения: 07.02.2007 21:52
Подскажите как с помощью getopts можно распарсить (и можно ли вообще?)
несколько параметров для одного флага.
Тоесть, например имеем: some_cmd -a b с d -e f g
Тогда скрипте нужно получить переменные:
A="b c d"
E="f g"
Количество параметров заранее неизвестно.
Автор: f_serg
Дата сообщения: 08.02.2007 07:30
RaZer

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

Нельзя...

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

Тогда надо запускать:
some_cmd -a 'b с d' -e 'f g'
Автор: RaZer
Дата сообщения: 08.02.2007 09:47
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'?
Автор: f_serg
Дата сообщения: 09.02.2007 08:33
RaZer
Есть такая еще мысль. Запускать:
some_cmd -a b -a c -a d -e f -e g
Ну, и при разборе параметров делать что-то типа:
A="$A $OPTARG"
Автор: RaZer
Дата сообщения: 10.02.2007 02:23
f_serg
Я уже так и сделал.
Но все-равно спасибо.
Автор: GrHnd
Дата сообщения: 13.02.2007 16:35
Подскажите хорошую книжку по Bash shell.
Автор: KADABRA
Дата сообщения: 13.02.2007 18:49
GrHnd

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

man bash
http://www.gnu.org/software/bash/manual/bashref.html
Автор: GrHnd
Дата сообщения: 14.02.2007 09:56
Iceman82
KADABRA
Спасибо.

Страницы: 123456

Предыдущая тема: Сжатие БД формата Access средствами VC++


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.