1

Тема: Помогите понять происхождение переменной в sh скрипте.

Наткнулся сегодня на скрипт резервного копирования MySQL http://guruadmin.ru/page/skript-bekapa- … -ih-na-ftp , и вот уже несколько часов подряд не могу понять откуда берётся переменная "$i".
Если она инициализируется через "echo $i", то она всегда будет пустой, в таком случае нафига она в скрипте?

2

Re: Помогите понять происхождение переменной в sh скрипте.

Может там заместо

for db in $DBS

должно быть

for i in $DBS

Ну.. я в скриптах не спец ))

а нет.. наверное напутал.. $i - это результат мне кажется текущей итерации (прохода) по массиву.. но это же и $db.. тоже не догоняю )) Или это счетчик проходов, то есть 0,1,2...n.. до конца.. Вероятно сам цикл ее как то резервирует по тихой..

Отредактировано gard (2010.03.11 01:24)

Contacts: gard.area51@jabber.ru/org .. more: http://gardarea51.wordpress.com

3

Re: Помогите понять происхождение переменной в sh скрипте.

ВОт мой эксперимент:

[gard@area51 ~]$ DBS=("1","2","3"); for i in $DBS; do echo $i; done
1,2,3

Сколь я не пробуй вывести $i - ее нет, а если однажды задать ей значение, то она и выводится. То есть откуда она - загадка. Только странно, что после условия for приходится ставить ;.. не силен я в скриптах.. ((

Отредактировано gard (2010.03.11 01:36)

Contacts: gard.area51@jabber.ru/org .. more: http://gardarea51.wordpress.com

4

Re: Помогите понять происхождение переменной в sh скрипте.

gard пишет:

Сколь я не пробуй вывести $i - ее нет, а если однажды задать ей значение, то она и выводится. То есть откуда она - загадка. Только странно, что после условия for приходится ставить ;.. не силен я в скриптах.. ((

В манах и книжках по шелам я не нашёл ничего связанного с "тихим резервированием" циклами каких либо необъявленых переменных, и взяться то этой "$i" неоткуда, похоже действительно автор сначала построил цикл на дополнительной переменной, а потом упростил его, а остатки не потёр.

Ладно, фиг с ним, это меня просто зацепило несоответствие в коде, зато маны с книжками перечитал.
Спасибо за поддержку.

5

Re: Помогите понять происхождение переменной в sh скрипте.

smile

Contacts: gard.area51@jabber.ru/org .. more: http://gardarea51.wordpress.com

6

Re: Помогите понять происхождение переменной в sh скрипте.

да, либо в целях что-то отдебажить было. но забыл потереть - это 100500 процентов.

7

Re: Помогите понять происхождение переменной в sh скрипте.

Судя по параметрам mysqldump там должно было быть имя таблицы, но его там не будет.

8

Re: Помогите понять происхождение переменной в sh скрипте.

Intellect пишет:

Судя по параметрам mysqldump там должно было быть имя таблицы, но его там не будет.

Если не указаны имена таблиц, должен копировать всю базу.
Выдержка из man mysqldump

There are three general ways to invoke mysqldump:
shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] --databases db_name1 [db_name2 db_name3...]
shell> mysqldump [options] --all-databases
If you do not name any tables following db_name or if you use the --databases or --all-databases option, entire databases are dumped.

Отредактировано Nicom (2010.03.14 01:23)

9

Re: Помогите понять происхождение переменной в sh скрипте.

вместо
echo $i
должно быть
echo $db
тогда все встает на свои места

Силой выбитое признание не показатель раскрываемости преступлений, а показатель слабости человека и бессилия правоохранительных органов в поиске и наказании истинных преступников.

10

Re: Помогите понять происхождение переменной в sh скрипте.

shaman пишет:

вместо
echo $i

По сути, этого echo $i; вобще не длжно быть, ведь скрипт наверное запускается кроном.

11

Re: Помогите понять происхождение переменной в sh скрипте.

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

Силой выбитое признание не показатель раскрываемости преступлений, а показатель слабости человека и бессилия правоохранительных органов в поиске и наказании истинных преступников.

12

Re: Помогите понять происхождение переменной в sh скрипте.

не удалить, а закомментировать (:

http://www.e-lug.ru/about/ -- Вся контактная информация
http://groups.google.com/group/e_lug -- Рассылка
e-lug@conference.jabber.ru -- Комната в Jabber