seq -w 相當於 os-x bash

seq -w 相當於 os-x bash

我有一個名為 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

相關內容