在 bash 中如何printf
以交互方式获取输入以打印序列。我尝试了以下方法:
read x; read y; printf '%s\n' {"$x".."$y"..5}
0
40
{0..40..5}
因此我试图获得这样的输出:
printf '%s\n' {0..40..5}
0
5
10
15
20
25
30
35
40
答案1
问题是您不能在 bash 括号扩展中以这种方式使用变量。
相反,你可以使用seq
:
read x; read y; printf '%d\n' $(seq "$x" 5 "$y")
或者更直接地
read x; read y; seq "$x" 5 "$y"
或 C 风格for
循环:
read x; read y; for ((i=x;i<=y;i+=5)); do printf '%d\n' "$i"; done
例如