ksh programming q

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

ksh programming q

Igor Grabin
hiya,

===
#!/bin/sh

counter=1
echo "before: $counter"
cat /etc/fstab | while read $fs ; do
 counter=$((counter+1))
 echo "in process: $counter"
done
echo "after: $counter"
===

конструкция с cat /etc/fstab | while read $fs - не страдает смыслом в
данном случае. я просто привожу короткий testcase.
в общем, у меня получается:
casket:/home/dem0n$ sh test.sh
before: 1
in process: 2
in process: 3
in process: 4
after: 1

кто знает, что нужно сделать, чтобы после выхода из цикла переменная
сохранила своё значение?

--
Igor "CacoDem0n" Grabin, http://violent.death.kiev.ua/


Reply | Threaded
Open this post in threaded view
|

Re: ksh programming q

Oleg Safiullin
> кто знает, что нужно сделать, чтобы после выхода из цикла переменная
> сохранила своё значение?
>

Навскидку в 4:30 утра ничего кроме следующего в голову не лезет :)

#!/bin/sh

counter=1
echo "before: $counter"
cat /etc/fstab |
(
         while read $fs && counter=$((counter+1)); do
                 echo "in process: $counter"
         done
         exit $counter
)
counter=$?
echo "after: $counter"


Reply | Threaded
Open this post in threaded view
|

Re: ksh programming q

Igor Grabin
On Sat, Nov 26, 2005 at 04:29:57AM +0600, Oleg Safiullin wrote:
> >кто знает, что нужно сделать, чтобы после выхода из цикла переменная
> >сохранила своё значение?
> Навскидку в 4:30 утра ничего кроме следующего в голову не лезет :)
ой ж......... задница.
на бис:
мне оттуда нужно массив передать, на самом деле.

> #!/bin/sh
>
> counter=1
> echo "before: $counter"
> cat /etc/fstab |
> (
>         while read $fs && counter=$((counter+1)); do
>                 echo "in process: $counter"
>         done
>         exit $counter
> )
> counter=$?
> echo "after: $counter"

--
Igor "CacoDem0n" Grabin, http://violent.death.kiev.ua/


Reply | Threaded
Open this post in threaded view
|

Re: ksh programming q

Oleg Safiullin
> ой ж......... задница.
> на бис:
> мне оттуда нужно массив передать, на самом деле.

С массивами можно примерно так разобраться:

#!/bin/sh

counter=1
echo "before: $counter"
set -- `cat /etc/fstab | (
         while read $fs; do
                 counter=$((counter+1))
                 echo "in process: $counter">&2
                # следующая команда мечатает элемент массива
                 echo "элемент#$counter"
         done
         exit $counter
)`
echo "after: $?"

# здесь элементы массива идут как $1, $2 ...

while [ "$1" ]; do
         echo "$1"
         shift
done

Ничего проще под утро не приходит в голову :)


Reply | Threaded
Open this post in threaded view
|

Re: ksh programming q

Mike Belopuhov
In reply to this post by Igor Grabin
On Sat, Nov 26, 2005 at 00:32 +0200, Igor Grabin wrote:

> On Sat, Nov 26, 2005 at 04:29:57AM +0600, Oleg Safiullin wrote:
> > >кто знает, что нужно сделать, чтобы после выхода из цикла переменная
> > >сохранила своё значение?
> > Навскидку в 4:30 утра ничего кроме следующего в голову не лезет :)
> ой ж......... задница.
> на бис:
> мне оттуда нужно массив передать, на самом деле.
>
> > #!/bin/sh
> >
> > counter=1
> > echo "before: $counter"
> > cat /etc/fstab |
> > (

ребята, вы чего курите? :)


#!/bin/sh

counter=1
echo "before: $counter"

while read line ; do
        counter=$((counter+1))
        echo "in process: $counter"
done </etc/fstab

echo "after: $counter"
               
вот и всё.


> >         while read $fs && counter=$((counter+1)); do
> >                 echo "in process: $counter"
> >         done
> >         exit $counter
> > )
> > counter=$?
> > echo "after: $counter"
>
> --
> Igor "CacoDem0n" Grabin, http://violent.death.kiev.ua/
>


Reply | Threaded
Open this post in threaded view
|

Re: ksh programming q

Oleg Safiullin
> #!/bin/sh
>
> counter=1
> echo "before: $counter"
>
> while read line ; do
>         counter=$((counter+1))
> echo "in process: $counter"
> done </etc/fstab
>
> echo "after: $counter"
>
> вот и всё.

Ну это при условии что именно из файла надо читать :)


Reply | Threaded
Open this post in threaded view
|

Re: ksh programming q

Igor Grabin
In reply to this post by Mike Belopuhov
On Sat, Nov 26, 2005 at 01:56:09AM +0300, Mike Belopuhov wrote:
> ребята, вы чего курите? :)
[...рабочий код skipped...]

гуру, поделись просветлением. где разверзается окаянное продолжение
прямой кишки?
я медитировал, и было у меня видение. явилось мне существо невиданной
мудрости, светлы были его одеяния, и вековой ум светился в глазах его.
прямы были руки его, и руки сии даровали мне скрижаль, на которой был
перечёркнутый символ пайпа, который '|'. и молвило мне существо -
'пайп нихт, дятел'. будучи в раздумьях о значении видения сего, я
изменил свой код, пример из которого показывал просвещённым донам. и,
о чудо - гремлины покинули окаянные строки.

и явилось мне ещё одно видение, о большой скорлупе (для непосвещённых
- shell), которая была как живая, и двигалась по письменам, которые
были начертаны ей мудрецами просветлёнными.
и была она первым, но не последним из чудес, которые явились мне.
был там символ, похожий весьма на начертание на подаренной мне
скрижали, и были письмена вписаны в него. и скорлупа откалывала от
себя кусок, который двигался прямо в волшебном символе, и проступали
на нём письмена. а потом возвращался он к породившей его скорлупе, и
был чист, как ясное небо.

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

--
Igor "CacoDem0n" Grabin, http://violent.death.kiev.ua/


Reply | Threaded
Open this post in threaded view
|

Re[2]: ksh programming q

Anton Maksimenkov
Hi, Igor.

Переведи на наш. :-[0

> On Sat, Nov 26, 2005 at 01:56:09AM +0300, Mike Belopuhov wrote:
>> ребята, вы чего курите? :)
> [...рабочий код skipped...]

> гуру, поделись просветлением. где разверзается окаянное продолжение
> прямой кишки?
> я медитировал, и было у меня видение. явилось мне существо невиданной
> мудрости, светлы были его одеяния, и вековой ум светился в глазах его.
> прямы были руки его, и руки сии даровали мне скрижаль, на которой был
> перечёркнутый символ пайпа, который '|'. и молвило мне существо -
> 'пайп нихт, дятел'. будучи в раздумьях о значении видения сего, я
> изменил свой код, пример из которого показывал просвещённым донам. и,
> о чудо - гремлины покинули окаянные строки.

> и явилось мне ещё одно видение, о большой скорлупе (для непосвещённых
> - shell), которая была как живая, и двигалась по письменам, которые
> были начертаны ей мудрецами просветлёнными.
> и была она первым, но не последним из чудес, которые явились мне.
> был там символ, похожий весьма на начертание на подаренной мне
> скрижали, и были письмена вписаны в него. и скорлупа откалывала от
> себя кусок, который двигался прямо в волшебном символе, и проступали
> на нём письмена. а потом возвращался он к породившей его скорлупе, и
> был чист, как ясное небо.

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

--
engineer