【发布时间】:2014-09-24 14:12:56
【问题描述】:
我想对一组按字典顺序命名的文件(10 之前的 01-09)运行某些操作。我必须使用相当旧的 FreeBSD 版本(7.3),所以我不能使用像 echo {01..30} 或 seq -w 1 30 这样的 yummies。
我找到的唯一可行的解决方案是printf "%02d " {1..30}。但是,我不明白为什么我不能使用$1 和$2 而不是1 和30。当我运行我的脚本 (bash ~/myscript.sh 1 30) printf 说{1..30}: invalid number
AFAIK,bash 中的变量是无类型的,那么 printf 怎么不能接受整数参数作为整数呢?
【问题讨论】:
-
printf 将/不会接受什么都不是问题。这是一个问题,因为当大括号扩展发生时,参数扩展尚未发生。
-
BashPitfalls #33 提到了这一点:mywiki.wooledge.org/BashPitfalls#for_i_in_.7B1...24n.7D——那里的链接可能有助于更好地理解命令运行时发生的情况。
-
(顺便说一下,是可以将变量标记为包含整数的;虽然几乎没有理由这样做,但实际上是 i> 存储了一些类型数据)。