Portál AbcLinuxu, 9. května 2025 19:14

Dotaz: BASH/SHELL-Matematika

12.7.2012 14:45 Jakub
BASH/SHELL-Matematika
Přečteno: 339×
Odpovědět | Admin
Ahoj, jak můžu získat něco takového pomocí tohto kodu? Děkuji
e=0000

for i in "${DATA[@]}";
do
     e=$((e +1))
done

Výsledek který bych potřeboval

0001
0002
..
0010
0011
..
0999
atd..

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.7.2012 15:16 juriad | skóre: 7
Rozbalit Rozbalit vše Re: BASH/SHELL-Matematika
Odpovědět | | Sbalit | Link | Blokovat | Admin
pocet=${#DATA[@]}
for i in `seq 1 $pocet`; do
  printf "%04d\n" $i;
done
12.7.2012 21:36 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: BASH/SHELL-Matematika
Odpovědět | | Sbalit | Link | Blokovat | Admin
Bash od verzie 4 uz pozna:
for i in 00..9999; do
    echo $i
done
If you hold a Unix shell up to your ear, you can you hear the C.
pavlix avatar 12.7.2012 22:56 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: BASH/SHELL-Matematika
[pavlix@dragon ~]$ $SHELL --version
GNU bash, version 4.2.29(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[pavlix@dragon ~]$ \
> for i in 00..9999; do
>     echo $i
> done
00..9999
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
12.7.2012 23:20 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: BASH/SHELL-Matematika
eeeeee, maly vypadok
for i in {00..9999}; do
    echo $i
done
Do verzie 3, bola expanzia {0..99} rovnaka ako {00..99}. Od verzie 4 ta druha verzia doplna nuly. Kedysi som sa s tym dost hral, pretoze som riesil expanziu XML do adresaroveho stromu do fs v ramdisku a potreboval som generovat rovnako dlhe cisla. Takze mam este zbierku inych rieseni:
# printf je interny prikaz bashu a nespusta proces
printf %09d "$1"

# ak treba vysledok ulozit do premennej, tak sa da vyhnut subshellu
printf -v var %09d "$1"
echo "$var"
A mal som este jedno starsie riesenie zalozene na cviceni s premennymi:
zeros=0000000000

num="$1"

if [[ ${#num} -lt 10 ]]; then
   len=$((10 - ${#num}))
   num="${zeros:0:$len}$num"
fi
echo $num
If you hold a Unix shell up to your ear, you can you hear the C.
pavlix avatar 13.7.2012 01:45 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: BASH/SHELL-Matematika
Hezké, funguje :).
Já už tu vlastně ani nejsem. Abclinuxu umřelo.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.