为什么我的bash脚本在循环结束时打印冒号?

Jef*_*ght 2 bash

我有以下bash脚本:

#!/bin/sh

num_loops=3

for i in `seq $num_loops`:
do
    printf 'Iteration %s\n' $i
done
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到以下输出.

$ ./loop-test.sh
Iteration 1
Iteration 2
Iteration 3:
Run Code Online (Sandbox Code Playgroud)

我想知道为什么脚本在最后一次迭代结束时生成一个无关的冒号(":")?我知道变量'i'是一个字符串,但为什么'seq'命令中的最后一次迭代会附加冒号?

Mar*_*c B 7

因为你告诉它使用一个:

for i in `seq $num_loops`:
                         ^---
Run Code Online (Sandbox Code Playgroud)

:不是必需的,并成为命令行参数的一部分:

for i in 1 2 3:
Run Code Online (Sandbox Code Playgroud)

在最后的迭代中$i = '3:',基本上.

  • 啊废话。Python 第一次咬我的尾巴! (2认同)