Answers:
使用格式:
$ seq -f "10.20.30.%g" 40 50
10.20.30.40
10.20.30.41
10.20.30.42
10.20.30.43
10.20.30.44
10.20.30.45
10.20.30.46
10.20.30.47
10.20.30.48
10.20.30.49
10.20.30.50
不幸的是,这并不明显,因为GNU不喜欢编写手册页。
info coreutils 'seq invocation'
。
%g
也没有记录。您必须寻找正确的printf
信息页面。
man 3 printf
在读者不熟悉printf格式字符串的情况下,引用也是一个好主意。就是说,我也不是他们使用texinfo的忠实拥护者,但这只是我的建议,通过使用确实存在的文档来改善您的答案,而不仅仅是指出缺少特定格式的文档。
for i in $(seq 2 23); do echo "10.0.0.$i"; done
如果我们删除了使用seq
命令的要求,并假定该ipcalc
命令可用,而Ubuntu prips
命令不可用,那么prips
可以将其实现为Bash shell函数:
prips() {
cidr=$1
# range is bounded by network (-n) & broadcast (-b) addresses.
lo=$(ipcalc -n $cidr |cut -f2 -d=)
hi=$(ipcalc -b $cidr |cut -f2 -d=)
read a b c d <<< $(echo $lo |tr . ' ')
read e f g h <<< $(echo $hi |tr . ' ')
eval "echo {$a..$e}.{$b..$f}.{$c..$g}.{$d..$h}"
}
请注意,这将包括该范围内的网络地址和广播地址;如果有问题,请从结果中删除第一个和最后一个地址。
bash
,可以使用打印该地址范围echo 10.0.0.{2..23}
。该{..}
构造称为支撑扩展。