seq -w-Äquivalent in OS-X Bash

seq -w-Äquivalent in OS-X Bash

Ich habe Unterordner mit den Namen 00 01 02, ... n, wobei jeder Ordnername mindestens 2 Ziffern enthält. Ich muss auf diese Unterordner im OS-X-Terminal zugreifen. Der Befehl

for i in $(seq -w 00 06); do
echo $i;
done

erzeugt eine Ausgabe von 0 1 2 3 4 5 6. Der obige Code in RHEL erzeugt jedoch eine Ausgabe von 00 01 02 03 04 05 06. Wie kann ich das Mac-Terminal zwingen, eine Ausgabe von mindestens 2 Ziffern zu erzeugen, die RHEL ähnelt?

Antwort1

Ich habe kein OS X, auf dem ich es ausprobieren könnte, aber vielleicht funktioniert diese Alternative:

seq -f '%02.0f' 0 6

Antwort2

OS/X wird mit ausgeliefert zsh, daher können Sie Ihr Skript zshstattdessen in schreiben (beachten Sie, dass Sie bereits die Syntax verwendet haben zsh(da Ihr $inicht in Anführungszeichen stand, wodurch der Split+Glob-Operator in aufgerufen wird bash):

for x in {00..06}; do
  echo $x
done

Möglicherweise können Sie immer Folgendes tun:

x=0; while [ "$x" -le 6 ]; do
  printf '%02d\n' "$x"
  x=$((x + 1))
done

Oder

seq() (first=$1 last=$2 width=${3:-0} step=${4:-1}
  awk "BEGIN{for (i = $first; i <= $last; i += $step)
    printf \"%0${width}d\n\", i}"
)

unset -v IFS # make sure we get the default separator
             # for the split+glob invocation below
for i in $(seq 0 6 2); do
  echo "$i"
done

verwandte Informationen