So erstellen Sie eine Bash-Shell mit Inkrement mit einer Variablen 0 als erstes Zeichen

2

So erstellen Sie eine Bash-Shell mit Inkrement mit 0 als erstem Zeichen für Inkrement:

for (( c=1; c<=75; c++ )) ; do echo 0$c ; done ;

gibt mir das:

.../...
07
08
09
010
011
.../...

Mein Problem, ich würde eine doppelte 00 für die 9 erste Ziffer bekommen, so möchte ich dieses Ergebnis als Problem:

.../...
007
008
009
010
011
.../...
Dubis
quelle

Antworten:

1

Während die Antwort von Arkadiusz Drabczyk die Ausgabe nach Ihren Wünschen formatiert, gibt es einen anderen Ansatz:

for c in {01..75}; do echo $c; done;   # for two digits
for c in {001..075}; do echo $c; done; # for three digits

Dies schließt führende Nullen in den zugewiesenen Werten von ein c, anstatt sie bei der Ausgabe zu addieren, und ich kann mir Umstände vorstellen, unter denen dies nützlicher wäre.

AFH
quelle
2
Was meinst du damit or it would if he'd use %02d? OP ausdrücklich gewünscht 001, 002etc.
Arkadiusz Drabczyk
2
@ Dubis dann tun {001..075}, es ist eleganter dannecho 0$c
Marek Rost
2
Bitte lesen Sie die Frage noch einmal sorgfältig durch. Ihre Antwort beantwortet nicht die ursprüngliche Frage. Es gibt 07, 08etc nicht 007, 008wie die OP angefordert.
DavidPostill
1
Zwei weitere Möglichkeiten, diese Katze zu häuten :)seq -f '%03.0f' 7 11 seq -w 7 11|xargs -I{} echo 0{}
Paulo
1
Keine Notwendigkeit von Xargs. seq -w 7 011 seq -w 007 11
Paulo
4

So verwenden printf:

for (( c=1; c<=75; c++ )) ; do printf "%03d\n" "$c" ; done
Arkadiusz Drabczyk
quelle