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 zsh
stattdessen in schreiben (beachten Sie, dass Sie bereits die Syntax verwendet haben zsh
(da Ihr $i
nicht 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