Portál AbcLinuxu, 9. května 2025 19:14
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:
pocet=${#DATA[@]} for i in `seq 1 $pocet`; do printf "%04d\n" $i; done
for i in 00..9999; do echo $i done
[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
for i in {00..9999}; do echo $i doneDo 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
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.