我有名为 00 01 02, ... n 的子文件夹,每个文件夹名称至少包含 2 位数字。我需要在 os-x 终端中访问这些子文件夹。命令
for i in $(seq -w 00 06); do
echo $i;
done
产生输出0 1 2 3 4 5 6
.但是,RHEL 中的上述代码将产生00 01 02 03 04 05 06
.如何强制 mac 终端产生类似于 RHEL 的至少 2 位数字的输出?
答案1
我没有 os-x 来尝试,但也许这个替代方案有效:
seq -f '%02.0f' 0 6
答案2
OS/X 附带了zsh
,因此您可以在其中编写脚本zsh
(请注意,您已经使用了zsh
语法(因为您$i
没有被引用,它调用了 中的 split+glob 运算符bash
):
for x in {00..06}; do
echo $x
done
Posixly,你总是可以这样做:
x=0; while [ "$x" -le 6 ]; do
printf '%02d\n' "$x"
x=$((x + 1))
done
或者
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