从变量生成IP

时间:2013-05-20 09:33:48

标签: bash ip-address

我正在尝试根据我设置的IP范围从文件中删除多个IP条目。

文件的前文:

15.12.168.192 13.13.168.192 23.12.168.192 23.15.168.192 等...

我想在脚本下面只设置RANGE区域。

#!/bin/bash

# RANGE 
START=192.168.12
END=192.168.13


##collecting the last two digit from START and END
first=`echo $START | sed 's/^.*\(.\{2\}\)$/\1/'`
last=`echo $END | sed 's/^.*\(.\{2\}\)$/\1/'`

## echo both
echo $first
echo $last

for ip in 192.168.1.{$first..$last}; do
echo "$ip"

## conversion of the IPs.
echo $ip | sed -e '/\n/!G;s/\([^.]*\)\.\(.*\n\)/&\2.\1/;//D;s/\n//'
done

即使对文件仍有最后一步(grep -v) - 我已经陷入了这个阶段;我知道这是一种语法......

这是一行:

for ip in 192.168.1.{$first..$last}; do
echo "$ip"

这是使用$first$last来生成给我带来麻烦的每个IP。

1 个答案:

答案 0 :(得分:1)

{12..45}仅适用于文字,您不能使用变量。但是,如果只有一对括号,则无需扩展:

for fourth in $( seq $first $last) ; do
    echo 192.168.1.$fourth
done