LINUX.ORG.RU

История изменений

Исправление Crystal_HMR, (текущая версия) :

Но это действительно извращение, ибо каждый раз запускать sed для последовательного получения строчек из файла полный ужас.

а какой другой вариант при такой задаче? Ну давайте в пямять загрузим весь файл в виде массива с разделителем newline, и будем выцеплять элементы массива. Есть сотни вариантов сделать то, что нужно.

Кстати подозреваю, что не работает потому, что я повелся на ваше grep access.log. Там не надо. Ну и второе - слегка в языках запутался, но надеялся что тс поймет и прочтет про инкремент

Вот вариант 2, думаю что access.log это таки файл, который надо читать:

#!/bin/bash
count=1
cd /home/man/httpd-logs 

for file in `ls -ll | awk '{print $9}' | grep 'access.log'` #хотя я бы использовал find
#или ls -1. Нет смысла получать список фалов по ls -l
#а потом авкашить только его название. Глупая работа
do
    chgrp `sed -n ${count}p /home/man/data.txt` ${file}
    count=$((count+1))
done 

PS. Следующее «не работает» с выводом

bash -x /path/to/script.sh

Исправление Crystal_HMR, :

Но это действительно извращение, ибо каждый раз запускать sed для последовательного получения строчек из файла полный ужас.

а какой другой вариант при такой задаче? Ну давайте в пямять загрузим весь файл в виде массива с разделителем newline, и будем выцеплять элементы массива. Есть сотни вариантов сделать то, что нужно.

Кстати подозреваю, что не работает потому, что я повелся на ваше grep access.log. Там не надо. Ну и второе - слегка в языках запутался, но надеялся что тс поймет и прочтет про инкремент

Вот вариант 2, думаю что access.log это таки файл, который надо читать:

#!/bin/bash
count=1
cd /home/man/httpd-logs 

for file in `ls -ll | awk '{print $9}' | grep 'access.log'` #хотя я бы использовал find
do
    chgrp `sed -n ${count}p /home/man/data.txt` ${file}
    count=$((count+1))
done 

PS. Следующее «не работает» с выводом

bash -x /path/to/script.sh

Исходная версия Crystal_HMR, :

Но это действительно извращение, ибо каждый раз запускать sed для последовательного получения строчек из файла полный ужас.

а какой другой вариант при такой задаче? Ну давайте в пямять загрузим весь файл в виде массива с разделителем newline, и будем выцеплять элементы массива. Есть сотни вариантов сделать то, что нужно.

Кстати подозреваю, что не работает потому, что я повелся на ваше grep access.log. Там не надо. Ну и второе - слегка в языках запутался, но надеялся что тс поймет и прочтет про инкремент

Вот вариант 2, думаю что access.log это таки файл, который надо читать:

#!/bin/bash
count=1

for file in `ls -ll | awk '{print $9}' | grep 'access.log'` #хотя я бы использовал find
do
    chgrp `sed -n ${count}p /home/man/data.txt` ${file}
    count=$((count+1))
done 

PS. Следующее «не работает» с выводом

bash -x /path/to/script.sh