/bin/bash for in

Модератор: Модераторы разделов

apekoff
Сообщения: 25

/bin/bash for in

Сообщение apekoff »

Всем привет ! Подскажите пожалуйста у меня есть два цикла for in
к примеру

Код: Выделить всё

names=/tmp/server/names
dirs=/tmp/server/dirs
for curent_name in $names
do
mkdir -p /tmp/$curent_name
done

for curent_dir in $dirs
do
echo $curent_dir/$curent_name
done


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

или вот еще пример

Код: Выделить всё

names=/tmp/server/names
dirs=/tmp/server/dirs
for curent_name in $names
do
mkdir -p /tmp/$curent_name
done

grep "parsed text" /tmp/file.conf* | while read parsed_var ; do
echo $parsed_var > /tmp/$curent_name/text.file
done

как совместить эти два цикла ? тоесть взять очередное значение $curent_name от первого цикла и поместить в цикл while read

Извиняюсь за сумбур :)
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: /bin/bash for in

Сообщение SLEDopit »

apekoff писал(а):
03.12.2013 13:35
как совместить эти два цикла ? тоесть взять очередное значение $curent_name от первого цикла и поместить в цикл while read
переместить один цикл внутрь другого и обращаться к текущему current_name?

или нужно каждому $current_name сопоставить только одно $parsed_var? если да, то что-то типа:

Код: Выделить всё

while read curent_name curent_dir
do
echo mkdir -p /tmp/$curent_name
echo $curent_dir/$curent_name
done < <(paste /tmp/server/names /tmp/server/dirs)
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: /bin/bash for in

Сообщение drBatty »

apekoff писал(а):
03.12.2013 13:35
grep "parsed text" /tmp/file.conf* | while read parsed_var ; do
echo $parsed_var > /tmp/$curent_name/text.file
done

потому-что налепили две кучи фекалий, а теперь думаете, "что с ними делать, и почему они не лепятся?"

ну у вас был один цикл?

Код: Выделить всё

names="/tmp/server/names"
dirs="/tmp/server/dirs"
for curent_name in $names
do
  mkdir -p /tmp/$curent_name
done

ну дык в него же-бы и лепили...

Код: Выделить всё

names="/tmp/server/names"
dirs="/tmp/server/dirs"
for curent_name in $names
do
  mkdir -p /tmp/$curent_name
  while read parsed_var
  do
    echo $parsed_var > /tmp/$curent_name/text.file
  done < <(grep "parsed text" /tmp/file.conf*)
done

тоже дерьмо, но хоть более-менее структурированное.

Hint: Вместо сильного колдунства <() лучше применить временный файл, соданый mktemp
Я (и предыдущий оратор) такое написал тупо от лени, ну и конечно для того, что-бы похвастаться.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
apekoff
Сообщения: 25

Re: /bin/bash for in

Сообщение apekoff »

Давайте я немного расскажу свою задачу ,а то я уже сам запутался и вас запутаю
Нужно объединить бекап Mysql + Data + заливка по фтп
В каждую папку с названием сайта будет складываться /tmp/backup/site1/dumps/base_name.sql - база. /tmp/backup/site2/backups/folder_name.tar.gz - файлы
затем отправка по фтп ,средствами ncftpput
данные о местоположении база->директория , название сайта->директория хочу брать от сюда:
структура симлинков mysql
database1->/var/www/site1/html/ database2->/var/www/site2/
структура симлинков sites
site1.com->/var/www/site1/html/ site2.com->/var/www/site2/
или же вот этот вариант
grep "ServerName\|DocumentRoot" /etc/apache2/sites-enabled/* | cut -d "\"" -f 2 | sed 'N;s/\n/ /' | while read root_name root_dir ; do

Код: Выделить всё

#/bin/bash
database=/tmp/data/mysql
server=/tmp/data/names
pass=password123
USERNAME='user'
HOSTNAME='server'
PASSWORD='pass'
cat /tmp/data/names /tmp/data/mysql | sed 'N;s/\n/ /' | while read curent_name curent_mysql
do
mkdir -p /tmp/backup/$curent_name/dumps/ /tmp/backup/$curent_name/backups/

вот тут мой вопрос дело в том что названия баз идут в алфавитном порядке и когда создается вызов $curent_name то он будет скорее всего не
соответствовать вызванному в этот же момент $curent_mysql
Поэтому я думал вызвать функцию бекапа Mysql баз в отдельном цикле
может быть еще проще будет создать файл конфига где в каждой строке будет запись к примеру name:mysql:dir
а уже из этого конфига будет парситься текщуие - названия сайта ,база данных и путь

Код: Выделить всё

mysqldump --skip-lock-tables --events --routines -p$pass $curent_mysql > /tmp/backup/$curent_name/dumps/$curent_mysql-`date +%Y-%m-%d`.sql
root_dir=$(readlink $curent_name)
dirname=$(basename $root_dir)
cd $root_dir/../
tar pc $dirname --exclude=.git | gzip -5 > /var/backup_test/$root_name/backups/$dirname.`date +%Y-%m-%d`.bak.tar.gz
ncftpput -R -m -z -r 10 -v -u $USERNAME -p $PASSWORD $HOSTNAME $curent_name /var/backup_test/$root_name/backups/.
done
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: /bin/bash for in

Сообщение drBatty »

apekoff писал(а):
03.12.2013 18:22
database=/tmp/data/mysql
server=/tmp/data/names

вот это что такое и откуда?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
apekoff
Сообщения: 25

Re: /bin/bash for in

Сообщение apekoff »

это симлинки
database=/tmp/data/mysql
database1->/var/www/site1/html/ , database2->/var/www/site2/
server=/tmp/data/names
site1.com->/var/www/site1/html/ , site2.com->/var/www/site2/
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: /bin/bash for in

Сообщение drBatty »

apekoff писал(а):
03.12.2013 18:53
это симлинки

это не ответ.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
apekoff
Сообщения: 25

Re: /bin/bash for in

Сообщение apekoff »

Я не знаю еще как ответить .
Это символические ссылки с названием базы и ссылкой на директорию самого вебсайта в первом случае.
Во втором это ссылки на директорию сайта и под названием site.com .
Все они созданы руками
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21352
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: /bin/bash for in

Сообщение Bizdelnick »

apekoff писал(а):
04.12.2013 13:24
Я не знаю еще как ответить .
Это символические ссылки с названием базы и ссылкой на директорию самого вебсайта в первом случае.
Во втором это ссылки на директорию сайта и под названием site.com .
Все они созданы руками

в for ... in ... должен быть список, а у Вас там один файл. Наверное, Вы имели в виду что-то другое. Не то in `cat "$names"`, не то in "$names"/*, не то ещё что-то. Если я неправ, то выкиньте цикл вообще - всё равно там ровно одна итерация проходит.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: /bin/bash for in

Сообщение SLEDopit »

apekoff писал(а):
03.12.2013 18:22
Нужно объединить бекап Mysql + Data + заливка по фтп
Ох уж эта тяга к велосипедам.

Но после вашего объяснения всё совсем запуталось.

Вот у вас есть структура директорий с сайтами: /var/www/siteX . Каким образом вы хотите соотнести базу данных с конкретным сайтом? Вот этими "ручными симлинками"?
Тогда уж проще сваять конфиг следующего вида:

Код: Выделить всё

sitename /path/to/site/ database_name


И читать конфиг в цикле:

Код: Выделить всё

while read sitename sitepath dbname ; do
backup sitepath to backuppath
dump db to backuppath
done < /path/to/config

И не нужно никаких симлинков.

А ещё лучше, вопользоваться человеческими решениями, типа rsnapshot'a. Доступ по ssh у вас, судя по тому, что скрипт пилите у вас есть, а значит и rsync наверняка стоит.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
apekoff
Сообщения: 25

Re: /bin/bash for in

Сообщение apekoff »

Ой как отлично все работает ! кроме небольшого мусора в папке dump .

Код: Выделить всё

#/bin/bash
pass=passworm_mysql
FTPU='ftpuser'
FTPH='server.ftp'
FTPP=ftppass'
config=/tmp/params.conf # тут создал строки  вида  -  "название сервера" "путь сервера" "название базы" если базы нет для сайта .то "название сервера" "путь сервера"
while read sitename path dbname ; do
mkdir -p /tmp/backup_conf/$sitename/backup/ /tmp/backup_conf/$sitename/dump/
dirname=$(basename $path)
mysqldump --skip-lock-tables --events --routines -p$pass $dbname > /tmp/backup_conf/$sitename/dump/$dbname-`date +%Y-%m-%d`.sql # тут при не существующей базе создается пустой файл
....

Как создать проверочное условие ? так ? если да то что нужно искать ?

Код: Выделить всё

if [ $dbname != "" ]; then # т.е. если "название базы" не равно "" то выполнить это . А что нужно указать в кавычках ? после $path в  /tmp/params.conf будет пустота .. первод строки , пробел #и тд
# или может сделать вот так if [ $dbname = "A-z/a-z/0-9" ]
# подскажите пожалуйста !!
mysqldump --skip-lock-tables --events --routines -p$pass $dbname > /tmp/backup_conf/$sitename/dump/$dbname-`date +%Y-%m-%d`.sql
fi

cd $path/../
tar pc $dirname --exclude=.git | gzip -5 > /tmp/backup_conf/$sitename/backup/$dirname.`date +%Y-%m-%d`.bak.tar.gz
done < $config
ncftpput -R -m -z -r 10 -v -u $FTPU -p $FTPP $FTPH / /tmp/backup_conf/.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: /bin/bash for in

Сообщение SLEDopit »

apekoff писал(а):
04.12.2013 18:09
Как создать проверочное условие ?
man test

Код: Выделить всё

[[ -n "$dbname" ]] && mysqldump


apekoff писал(а):
04.12.2013 18:09
mysqldump --skip-lock-tables --events --routines -p$pass $dbname
Так не очень хорошо делать. Во-первых, ваш процесс будет висеть и любой, кто посмотрит список процессов, узнает пароль, во-вторых хранить пароль в скрипте тоже не есть хорошо. Почитайте про ~/.my.cnf .

Ну и вместо ftp лучше использовать sftp.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: /bin/bash for in

Сообщение Rootlexx »

SLEDopit писал(а):
04.12.2013 18:18
любой, кто посмотрит список процессов, узнает пароль

У proc есть опция hidepid, ненулевое значение которой предотвратит подобные утечки. Так, к слову.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: /bin/bash for in

Сообщение SLEDopit »

Rootlexx писал(а):
04.12.2013 20:29
ненулевое значение которой предотвратит подобные утечки. Так, к слову.
Есть. Но, как правило, по умолчанию оно выключено. И это в линуксах. В *bsd это в опциях ядра задаётся, если я правильно помню.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: /bin/bash for in

Сообщение drBatty »

SLEDopit писал(а):
04.12.2013 18:18
man test

Код: Выделить всё

[[ -n "$dbname" ]] && mysqldump

тащем-то test это совсем другая команда, а [[ ]] это вообще не команда.

Тогда уж (если man test)

Код: Выделить всё

if test -n "$dbname"; then
  mysqldump
fi

ну можно и так (в bash)

Код: Выделить всё

if [[ "" != "$dbname" ]]; then
  mysqldump
fi


SLEDopit писал(а):
04.12.2013 18:18
Так не очень хорошо делать. Во-первых, ваш процесс будет висеть и любой, кто посмотрит список процессов, узнает пароль, во-вторых хранить пароль в скрипте тоже не есть хорошо. Почитайте про ~/.my.cnf .

Ну и вместо ftp лучше использовать sftp.

с этим можно только согласится.
Хотя, если речь про sftp (ftp over ssh), то я думаю, что не слишком опасно передавать пароль/логин в открытом виде через ssh туннель. Конечно если настроен доступ по ключам ssh.

Т.е. вполне лопустимо просто написать что-то типа

$

ssh user@host mysqldump --password="mysqlpassword" --user="mysqlusername"


оно в общем-то пароль AFAIK пишет как ****** во всяких ps/top. Т.ч. локально пользователи вряд-ли увидят.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21352
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: /bin/bash for in

Сообщение Bizdelnick »

drBatty писал(а):
05.12.2013 11:05
sftp (ftp over ssh)

википедия://SFTP
Это не FTP over SSH.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: /bin/bash for in

Сообщение drBatty »

Bizdelnick писал(а):
05.12.2013 11:10
Это не FTP over SSH.

я знаю. Имелось ввиду "передача файлов по ssh туннелю". Т.е. у меня "FTP" означет "передача файлов", а вовсе НЕ конкретный http://tools.ietf.org/html/rfc959

прошу прощение за путаницу.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: /bin/bash for in

Сообщение drBatty »

и да, RFC959 == труп ненужный. Давно пора закопать. Единственная причина, по которой его гальванизируют -- ещё один труп, который без этого трупа(FTP) не гальванизируется. Т.о. RFC959 нужен только некромантам-некрофилам.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
apekoff
Сообщения: 25

Re: /bin/bash for in

Сообщение apekoff »

Добрый вечер в продолжение темы еще вылез вопросик.
Здесь все круто работает , но на фтп ограниченное пространство для бекапов
как в фтп оставлять 7 последних бекапов ? лишние удалять
а локально $path/../backups/ оставлять 14 последних


Код: Выделить всё

#/bin/bash
pass=md5hash password
FTPU='user'
FTPH='username.your-backup.de'
FTPP='password'
config=/usr/local/lib/server/params.conf
while read sitename path dbname ; do
dirname=$(basename $path)
[ -n "$dbname" ] && mysqldump --skip-lock-tables --events --routines -p$pass $dbname > $path/../backups/dump/$dbname-`date +%Y-%m-%d_%H-%M`.sql
cd $path/../
tar pc $dirname --exclude=.git | gzip -5 > $path/../backups/backup/$dirname.`date +%Y-%m-%d_%H-%M`.bak.tar.gz
ncftpput -R -m -z -r 10 -v -u $FTPU -p $FTPP $FTPH $sitename/ $path/../backups/.
done < $config
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: /bin/bash for in

Сообщение drBatty »

apekoff писал(а):
13.12.2013 00:46
как в фтп оставлять 7 последних бекапов ? лишние удалять

получить список всех файлов (командой ls), и потом отрезать посл. 7, и удалить все остальные командой rm, если список не пуст.

в консоли такой список получается так:

$

N=$(/bin/ls -rt |sed -n '$=') (( N -= 7 )) /bin/ls -rt | sed -n "$N"',$p'


(тут сортировка по времени в обратном порядке)
это чисто пример конечно, для пояснения принципа.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21352
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: /bin/bash for in

Сообщение Bizdelnick »

drBatty писал(а):
13.12.2013 12:18
в консоли такой список получается так:

$

N=$(/bin/ls -rt |sed -n '$=') (( N -= 7 )) /bin/ls -rt | sed -n "$N"',$p'


Зачем тут sed?
ls -rt | head -n-7
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: /bin/bash for in

Сообщение drBatty »

Bizdelnick

Код: Выделить всё

sed "1,$Np"

задача была вроде как "удалить всё кроме семи".
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21352
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: /bin/bash for in

Сообщение Bizdelnick »

drBatty писал(а):
13.12.2013 12:36
задача была вроде как "удалить всё кроме семи".

Запустил Ваш скрипт. Он выдаёт последние 8 файлов текущего каталога. Как это соответствует задаче - не понял. Мой выдаёт всё кроме последних 7 файлов - то, что надо удалить.

drBatty писал(а):
13.12.2013 12:36

Код: Выделить всё

sed "1,$Np"

Что это?
sed: -e выражение #1, символ 2: непредвиденный символ `,'
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: /bin/bash for in

Сообщение drBatty »

Bizdelnick писал(а):
13.12.2013 14:03
sed: -e выражение #1, символ 2: непредвиденный символ `,'

очевидно выражение $N у вас не определено. Его надо было определить как здесь /bin/bash for in
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21352
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: /bin/bash for in

Сообщение Bizdelnick »

Определено.

Shell

% echo $N 23 % sed "1,$Np" sed: -e выражение #1, символ 2: непредвиденный символ `,' % sed --version GNU sed версия 4.2.1 Copyright © 2009 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. GNU sed home page: <http://www.gnu.org/software/sed/>. General help using GNU software: <http://www.gnu.org/gethelp/>. E-mail bug reports to: <bug-gnu-utils@gnu.org>. Be sure to include the word ``sed'' somewhere in the ``Subject:'' field. %


Upd. Дошло, что Вы имели в виду. Имя переменной надо в фигурные скобки заключать. Но head/tail для таких целей ИМХО проще использовать.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: /bin/bash for in

Сообщение drBatty »

Bizdelnick писал(а):
14.12.2013 13:31
Дошло, что Вы имели в виду. Имя переменной надо в фигурные скобки заключать.

у вас точно bash? У меня и так работает -- bash раскрывает $N внутри кавычек, и получается число. А у вас почему-то не раскрывает, только я не понимаю, почем?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21352
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: /bin/bash for in

Сообщение Bizdelnick »

drBatty писал(а):
15.12.2013 15:38
у вас точно bash?

Да, у меня и в bash, и в zsh одинаковое поведение: $Np и ${N}p интерпретируются по-разному. Кроме того, Вы ключ -n забыли. А выше у Вас всё правильно было.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: /bin/bash for in

Сообщение drBatty »

Bizdelnick
угу. Пример с ошибкой. Сначала я одну ошибку сделал, потом другую.

но вы спросили:
Bizdelnick писал(а):
13.12.2013 12:27
Зачем тут sed?

я ответил, что с tail будет несколько сложнее.

(кстати, ЕМНИП плохо работает head с концами текста, весь текст читает, а потом последнее выплёвывает. Лучше tail, хотя в данном конкретном случае это не очень важно, т.к. в конвейере иначе не получается. Почему я и говорил выше ( /bin/bash for in ), что конвейер тут не нужен)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21352
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: /bin/bash for in

Сообщение Bizdelnick »

drBatty писал(а):
15.12.2013 16:37
я ответил, что с tail будет несколько сложнее.

Одна строчка вместо трёх - это сложнее? Ну ладно, как скажете.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: /bin/bash for in

Сообщение drBatty »

Bizdelnick писал(а):
15.12.2013 19:12
Одна строчка вместо трёх - это сложнее?

как там одной строчкой вывести все линии от 1й до 21й из 28и? А как вывести 0 линий, если строчек 1,2,3,4,5,6, или 7? ИМХО с sed это проще получается, потому-что всякие head выводят либо N первых, либо N последних. Но никак не от 1 до N.

И да, по поводу "одной строчки", вы прекрасно знаете, что мне не тяжело и в одну строчку записать. Только кому это надо?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: