LinuxForum.Fans
Тема

Программирование на Bash

Автор: u______05 17 сообщений 2761 просмотров
#222274

Я немного не понимаю, как мне из интерактивного режима перейти в командный(диалоговый режим), может кто знает подскажите, пожалуйста, очень очень надо
Вот код проги:

Код Bash

text
#!/bin/bash
FILES=”/home/elena/proga”
 
k=0
while [ $k -ne 10 ]; do
ps –ejH | cut -c37-60 >> proga
k=$(( $k + 1 ))
done
 
cat proga | while read line
do 
if [ $(grep -wc “$line” proga)  -ge 10 ]; then
echo “$line” >> tyt
else echo “NO SUCH PROCESS”
fi
done
 
sort tyt | uniq >> format

пользуйтесь тегом code. Fat-Zer

#222307
Елена_05 написал:
как мне из интерактивного режима перейти в командный(диалоговый режим)

"интерактивный" и "диалоговый" - это одно и тоже. определитесь и описывайте полностью, что вам нужно/вы делаете...
сразу по скрипту:
1) почему-то везде тире вместо минусов
2) непонятно зачем ps ключ H
3) cut: если делаете так, то лучше делать до конца строки: cut -c37-
4) решение задачи(какой бы она ни была) очень кривое и со множеством багов.

#222308

Да, согласна, немного напутала, мне нужен диалоговый режим

1) Вместо минусов тире, это моя ошибка, я переписывала так, в работающем коде все хорошо
2) Ключ с Н на многое он не влияет, но по заданию так нужно было
3) cut мне нужно именно эти символы

Я не знаю как перейти на это режим, подскажите, если знаете)

#222311

Елена_05, я вас не понимаю. что вы понимаете под "диалоговым режимом"?
вот вы открыли консоль
перешли в каталог со своим скриптом cd <блабла>
убедились, что он исполняемый ls -l <скрипт>
запускаете ./<скрипт>
??????
profit!

#222313
Fat-Zer написал:
"интерактивный" и "диалоговый" - это одно и тоже.

вовсе нет! Сравните $! и $! - в разных режимах эта переменная имеет кардинально разное назначение!

Елена_05 написал:
Я немного не понимаю, как мне из интерактивного режима перейти в командный(диалоговый режим), может кто знает подскажите, пожалуйста, очень очень надо
Вот код проги:

Напишите пожалуйста условие задачи, ЧТО вы хотите. Код - это лишь приложение. Может вы хотите прочитать что-то с клавиатуры? И вам мешает то, что вы переназначили нулевой поток (stdin), и теперь все команды читают оттуда, а вам хочется проверить нажатие кнопок?

Елена_05 написал:
это моя ошибка, я переписывала так

ошибка в том, что надо было копировать текст, а не переписывать.
Если вам мало возможностей форума - используйте сервис http://pastebin.com/
Он как раз для публикации исходных текстов.

Елена_05 написал:
Я не знаю как перейти на это режим, подскажите, если знаете)

1. когда вы набираете буквы в терминале (в эмуляторе терминала) - это интерактивный режим.
2. когда выполняется скрипт - это командный режим.

#222316

Мне по заданию сказано, чтобы программа работала в интерактивном и в командном режимах, значит в командном у меня есть, нужно в интерактивном

#222321
Елена_05 написал:
Я немного не понимаю, как мне из интерактивного режима перейти в командный(диалоговый режим),
Fat-Zer написал:
Елена_05, я вас не понимаю. что вы понимаете под "диалоговым режимом"?
вот вы открыли консоль
перешли в каталог со своим скриптом cd <блабла>
убедились, что он исполняемый ls -l <скрипт>
запускаете ./<скрипт>
??????
profit!

+

или ..
вот вы открыли консоль
набрали команду , нажали [Enter] ...выполнение команды ..
profit!

касательно скрипта - все синтаксические конструкции нужно вмещать в одну строку или экранировать переход строки обратным слешем , но в этом случае очень неудобно переопределять ранее полученные результаты или переменные ...

что-то типа такого :
1-й вариант :
[console]
olololena@host ~$ FILES=”/home/elena/proga”
olololena@host ~$ k=0
olololena@host ~$ while [ $k -ne 10 ]; do ps –ejH | cut -c37-60 >> proga k=$(( $k + 1 )) done
olololena@host ~$ cat proga | while read line do if [ $(grep -wc “$line” proga) -ge 10 ]; then echo “$line” >> tyt else echo “NO SUCH PROCESS” fi done
olololena@host ~$ sort tyt | uniq >> format
[/console]
2-й вариант :
[console]
olololena@host ~$ FILES=”/home/elena/proga”
olololena@host ~$ k=0
olololena@host ~$ while [ $k -ne 10 ]; do \
ps –ejH | cut -c37-60 >> proga \
k=$(( $k + 1 )) \
done
olololena@host ~$ cat proga | while read line \
do \
if [ $(grep -wc “$line” proga) -ge 10 ]; then \
echo “$line” >> tyt \
else echo “NO SUCH PROCESS” \
fi \
done
olololena@host ~$ sort tyt | uniq >> format
[/console]

речь об этом ?

#222323
drBatty написал:
вовсе нет! Сравните $! и $! - в разных режимах эта переменная имеет кардинально разное назначение!

о_О то ли это утки высоко летали, то ли мы собаку низко подбрасывали...
вы правда видите разницу между "диалоговым" и "интерактивным"? просветите что ли...

#222326

Я не знаю как делать в диалоговом режиме, почему и подняла эту тему, когда я запускаю на выполнение свой скрипт - это командный режим, а диалоговый (или по другому интерактивный) мне нужно сделать

#222330
Елена_05 написал:
Я не знаю как делать в диалоговом режиме, почему и подняла эту тему, когда я запускаю на выполнение свой скрипт - это командный режим, а диалоговый (или по другому интерактивный) мне нужно сделать

читайте тут - [url=ftp://ftp.ua.openwall.com/pub/docs/user/tools/shell/bash1/bash-4.html]СПЕЦИФИЧЕСКИЕ ВОЗМОЖНОСТИ ВАSH[/url]

#222332

Спасибо, но там вроде не то

#222334
Елена_05 написал:
Спасибо, но там вроде не то

ой ли ?

СПЕЦИФИЧЕСКИЕ ВОЗМОЖНОСТИ ВАSH написал:

4.1 Вызов BASH
..
...
-i
Заставляет оболочку выполнять команды в интерактивном режиме.
Елена_05 написал:
Я не знаю как делать в диалоговом режиме, почему и подняла эту тему, когда я запускаю на выполнение свой скрипт - это командный режим, а диалоговый (или по другому интерактивный) мне нужно сделать

WTF ??

#222339

и строку set -i <имя файла> мне нужно писать в консоли?

#222346
Елена_05 написал:
и строку set -i <имя файла> мне нужно писать в консоли?
там же, но чуть ниже написал:

4.5 Встроенная команда set.

Зта встроенная команда настолько перегружена, что ей посвящается целый раздел.

set [abefhkmnptuvxldCHP] [-o опция] [аргумент]
....

во первых прочтите всё руководство, станет понятней как это работает , во-вторых - приведите в виде цитаты(с соблюдением оригинального стиля и пунктуации) задание без собственных домыслов и интерпретаций , мне , например , абсолютно не понятно что вам надо от баша ...

#222369
Fat-Zer написал:
вы правда видите разницу между "диалоговым" и "интерактивным"? просветите что ли...

ну "диалоговый" вообще нет такого понятия.
есть интерактивный и не-интерактивный. Как я понимаю, Елена_05, называет "диалоговым" тоже интерактивный, хотя по логике, ИМХО это не-интерактивный. Что-бы внести ясность замечу:

1. по умолчанию, когда мы открываем терминал, bash работает в интерактивном режиме.
2. если мы выполняем скрипт (в том-же терминале, либо как-то иначе), bash работает внутри этого скрипта в не-интерактивном режиме.

Уважаемый gramozeka, всех путает, рассказывая, как внутри скрипта заиметь себе интерактивный режим wink
Я более чем уверен, что Елена_05, хочет чего-то другого.

Елена_05 написал:
и строку set -i <имя файла> мне нужно писать в консоли?

тогда вы перейдёте из интерактивного в тот же интерактивный. Ответ - нет. Так делать не нужно.

Вообще, я не очень понимаю, зачем тут нужен интерактивный режим?

#222415

прав доктор smile , тут нужно само задание смотреть

drBatty написал:
Вообще, я не очень понимаю, зачем тут нужен интерактивный режим?

а то мы тут развели кисель , а на самом деле всё может быть куда как проще ..

P.S. и да , никого не хотел вводит в заблуждение , ждём от ТС оригинальный текст задания ..

#222538
gramozeka написал:
P.S. и да , никого не хотел вводит в заблуждение , ждём от ТС оригинальный текст задания ..

нет, спасибо, я вот про set -i узнал, может когда-нить и пригодится wink

Войдите или зарегистрируйтесь, чтобы ответить.