首页 > 解决方案 > 如何使用 {1..$VAR} 使 printf 正常工作

问题描述

当我这样做时,我得到了我的期望:

$ printf "https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=%d\n" {1..10}
https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=1
https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=2
https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=3
https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=4
https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=5
https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=6
https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=7
https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=8
https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=9
https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=10

但是当我这样做时,它似乎将其视为 1 arg:

cbongiorno at wa-christianb-mbp in ~/dev/mystuff/bashful on master [!?]
$ count=10

cbongiorno at wa-christianb-mbp in ~/dev/mystuff/bashful on master [!?]
$ printf  "https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=%d\n" {1..${count}}
bash: printf: {1..10}: invalid number
https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=0

cbongiorno at wa-christianb-mbp in ~/dev/mystuff/bashful on master [!?]
$ printf  "https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=%d\n" "{1..${count}}"
bash: printf: {1..10}: invalid number
https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=0

cbongiorno at wa-christianb-mbp in ~/dev/mystuff/bashful on master [!?]
$ printf  "https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=%d\n" {1.."${count}"}
bash: printf: {1..10}: invalid number
https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=0

如何让 bash 像对数字进行硬编码一样扩展这个 arg?

标签: bash

解决方案


你可以用这种方式重写你的行:

printf "https://api.bitbucket.org/2.0/repositories/twengg?pagelen=0&page=%d\n" $(seq 1 $count)

命令seq通常用于生成连续(基于规则)数字


推荐阅读