LINUX.ORG.RU

[bash for noob] пару вопросов ламера


0

2

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

вот на пример:

echo "время спать, сцуко!"
echo "согласен идти спать? [yes\no]"
read TEST;
	if [$TEST = "yes"]; then
		echo "ok, но попингуем локалхост перед сном :Е"
		ping 127.0.0.1;
	else [$TEST = "no"]; then
		echo "ну и рагуль, ты посмотри на время"
		date;
	else [$TEST =]; then
		echo "шо ты лепиш!?"
		ping 8.8.8.8
		exit 0;
fi

Ну так вот:
1) как записать то, что вводит юзер, скажем, в файл cat'ом? этого я просто никак и нигде не могу найти :(
2) касательно примера, как можно реализовать то, что при условии ввода чего-либо, помимо «да» или «нет» возвращать какой-то месседж и повторить вопрос?
3) у меня всегда по завершении чего-либо сразу закрываеться терминал, т.е. если выполнить echo «тест», то терминал только мигнёт и сразу закроеться. Хотелось бы что бы юзер сам должен был закрыть консольку

ЗЫ: большое спасибо адэкватно ответившим
ЗЫЫ: с удовольствием прийму рекомендации на прочтения чего-либо, если там точно будут ответы на мои вопросы, еще раз спасибо :)
ЗЫЫЫ: да, можно причислить меня к школоте :D

> else [$TEST = «no»]; then

elif

1) как записать то, что вводит юзер, скажем, в файл cat'ом? этого я просто никак и нигде не могу найти :(


Одну строку записать? Так:

read TEST;
echo «$TEST» > filename.txt

2) касательно примера, как можно реализовать то, что при условии ввода чего-либо, помимо «да» или «нет» возвращать какой-то месседж и повторить вопрос?


Открыть man bash и долистать до while do done, прочитать, обрадоваться.

geekless ★★
()

> с удовольствием прийму рекомендации на прочтения чего-либо, если там точно будут ответы на мои вопросы

В принципе, достаточно читать man bash и http://tldp.org/LDP/abs/html/ А если в этих мануалах чего-то нет, то просто гуглить.

geekless ★★
()

- if [$TEST = «yes»]; then
+ if [ «$TEST» = yes ]; then

- else [$TEST = «no»]; then
+ else [ «$TEST» = no ]; then

- else [$TEST =]; then
+ else [ ! «$TEST» ]; then

AnDoR ★★★★★
()

> с удовольствием прийму рекомендации на прочтения чего-либо, если там точно будут ответы на мои вопросы, еще раз спасибо :)
Advanced Bash Scripting Guide (есть на русском)

if [$TEST = «yes»]; then

Забыли пробел после '['. Квадратные скобки - такие же команды, как и любые другие. Выражение вида [ something ] эквивалентно test something.

else [$TEST = «no»]; then

То же самое, плюс нужно заменить else на elif.

else [$TEST =]; then

А здесь нужно вообще убрать условие.

Также не помешает man builtins на тему параметров, с которыми запускается read.

как записать то, что вводит юзер, скажем, в файл cat'ом? этого я просто никак и нигде не могу найти :(

echo «$переменная» > file.txt

2) касательно примера, как можно реализовать то, что при условии ввода чего-либо, помимо «да» или «нет» возвращать какой-то месседж и повторить вопрос?

Читаем про цикл until ... do ... done

3) у меня всегда по завершении чего-либо сразу закрываеться терминал, т.е. если выполнить echo «тест», то терминал только мигнёт и сразу закроеться. Хотелось бы что бы юзер сам должен был закрыть консольку

Ну вставьте ещё один read, почему бы и нет?

AITap ★★★★★
()

> ЗЫЫ: с удовольствием прийму рекомендации на прочтения чего-либо, если там точно будут ответы на мои вопросы

Если хочешь почитать на русском, то попробуй найти книжицу:

Дэвид Тейнсли «Linux и Unix: программирование в shell. Руководство разработчика»

Там все ответы на твои вопросы и многое-многое другое.

А в общем-то, тебе здесь уже практически всё рассказали :)

OldFatMan
()
Ответ на: комментарий от OldFatMan

Каждому огромное спасибо, более чем доходчиво и понятно
Буду дерзать :)
Да прибудет с вами bash!)
ЗЫ: ну и пиво конечно же, пусть тоже прибудет :D

Spirit_of_Stallman ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.