Простейший счетчик

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
sedikpoll
Сообщения: 100

Простейший счетчик

Сообщение sedikpoll »

В сценарии перечисляю строки ручками:

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

...
...
...
echo '1. ABC:'; ...
echo '2. QWERTY:'; ...
echo '3. ASDF:'; ...
...


Не могу полностью понять как сделать простейший счетчик что бы избавится от ручного набора "1. 2. 3. " т.д. в начале строки. Понимаю что должно быть что то вроде цикла:

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

...
...
...
COUNTER=$[$COUNTER +1]
echo "${COUNTER} ABC:"; ...
echo "${COUNTER} QWERTY:"; ...
...


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

Re: Простейший счетчик

Сообщение drBatty »

sedikpoll писал(а):
08.10.2013 12:20
Не могу полностью понять как сделать простейший счетчик что бы избавится от ручного набора "1. 2. 3. " т.д. в начале строки. Понимаю что должно быть что то вроде цикла:

наверное вы это хотите:

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

COUNT=0

while (( COUNT < 10 )); do
    echo $COUNT
    (( COUNT++ ))
done


PS: ВАЖНО: это bash, а не POSIX!

а может даже этого

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

declare -a ARRAY
ARRAY=( ABC QWERTY "x Y z" )


COUNT=0

while (( COUNT < 3 )); do
    echo $COUNT ${ARRAY[$COUNT]}
    (( COUNT++ ))
done
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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

Re: Простейший счетчик

Сообщение sedikpoll »

drBatty писал(а):
08.10.2013 12:29
sedikpoll писал(а):
08.10.2013 12:20
Не могу полностью понять как сделать простейший счетчик что бы избавится от ручного набора "1. 2. 3. " т.д. в начале строки. Понимаю что должно быть что то вроде цикла:

наверное вы это хотите:

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

COUNT=0

while (( COUNT < 10 )); do
    echo $COUNT
    (( COUNT++ ))
done


PS: ВАЖНО: это bash, а не POSIX!

а может даже этого

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

declare -a ARRAY
ARRAY=( ABC QWERTY "x Y z" )


COUNT=0

while (( COUNT < 3 )); do
    echo $COUNT ${ARRAY[$COUNT]}
    (( COUNT++ ))
done


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

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

export COUNT=1
while (( COUNT < 3 )); do

echo "${COUNT} ABC:";
echo "${COUNT} QWERTY:";

(( COUNT++ ))
done


На выходе получаю:

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

1 ABC:
1 QWERTY:
2 ABC:
2 QWERTY:


Нужно

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

1 ABC:
2 QWERTY:
Спасибо сказали:
Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: Простейший счетчик

Сообщение Subj »

Если совсем по тупому, то как то так

count=1
incr() {
echo "$count. $@"
let count=count+1
}

incr ABC
incr QWERTY
Building better software with Ada
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Простейший счетчик

Сообщение Bizdelnick »

echo "ABC:\nQWERTY:" | cat -n не подходит?
См. также info sed 'cat -n'.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: Простейший счетчик

Сообщение Subj »

Bizdelnick писал(а):
08.10.2013 12:52
echo "ABC:\nQWERTY:" | cat -n не подходит?


-e еще надо в echo. Или сразу уж

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

cat -n <<EOF
ABCD
QWER
EOF

     1  ABCD
     2  QWER
Building better software with Ada
Спасибо сказали:
sedikpoll
Сообщения: 100

Re: Простейший счетчик

Сообщение sedikpoll »

Subj, не совсем понял как впихнуть предложеный вами вариант.
Bizdelnick, cat тут не вариант, насколько я понимаю.

#!/bin/sh
UserAgent="User-Agent: Mozilla/5.001 (windows; U; NT4.0; en-US; rv:1.0) Gecko/25250101"

echo "1. ABC:"; curl -sH $UserAgent http://site/2.txt | grep -Ei "stable tag"; curl -sH $UserAgent http://site/1/ | grep -i "Download Version"
echo "2. QWERTY:"; curl -sH $UserAgent http://site/1.txt | grep -Ei "stable tag"; curl -sH $UserAgent http://site/2/ | grep -i "Download Version"
Спасибо сказали:
Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: Простейший счетчик

Сообщение Subj »

sedikpoll писал(а):
08.10.2013 13:15
Subj, не совсем понял как впихнуть предложеный вами вариант.


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

count=1
echoi() {
echo "$count. $@"
let count=count+1
}

echoi "ABC:"; curl -sH $UserAgent http://site/2.txt | grep -Ei "stable tag"; curl -sH $UserAgent http://site/1/ | grep -i "Download Version"
echoi "QWERTY:"; curl -sH $UserAgent http://site/1.txt | grep -Ei "stable tag"; curl -sH $UserAgent http://site/2/ | grep -i "Download Version"
Building better software with Ada
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Простейший счетчик

Сообщение drBatty »

sedikpoll писал(а):
08.10.2013 12:35
1 ABC:
2 QWERTY:

может

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

COUNT=1
echo $COUNT ABC:
(( COUNT++ ))
echo $COUNT QWERTY:

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

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5289
ОС: Gentoo

Re: Простейший счетчик

Сообщение /dev/random »

Задача определена не очень внятно, но я думаю, что вы хотели получить это:

echo $((++count)) abc
echo $((++count)) def
echo $((++count)) ghi
echo $((++count)) jkl
Спасибо сказали:
Ответить