在for循环中使用命令行参数(bash)

fra*_*man 2 bash arguments for-loop

我正在尝试编写一个bash脚本,该脚本应该在一系列IP地址上执行反向DNS查找.我们的想法是将网络(前3个八位字节)提供为1美元,将范围的开始提供为2美元,将所述范围的结束提供为3美元.

所以我最终得到了:

#!/bin/bash
if [ $# -ne 3 ]
then
    echo "[*] Usage: reverselookup.sh [Network (x.x.x)] [start of range (y)]  [end of range (z)]"
    exit 1
fi

for ip in {$2..$3}
do
    host $1.$ip | grep pointer
done
Run Code Online (Sandbox Code Playgroud)

现在我认为这将在bash for循环中使用正常的序列操作,就像在

for i in {2..5}
Run Code Online (Sandbox Code Playgroud)

给你一个2,3,4和5的循环.但它不起作用.

如果我在循环中回显$ ip并将其作为例如运行

reverselookup.sh 192.168.10 21 50
Run Code Online (Sandbox Code Playgroud)

它给我带来了

{} 21..50

有谁知道是否有可能使这项工作?或者我必须重新考虑我的appraoch?

提前致谢.

dev*_*ull 6

你可以seq用来替换

for ip in {$2..$3}
Run Code Online (Sandbox Code Playgroud)

说:

for ip in $(seq $2 $3)
Run Code Online (Sandbox Code Playgroud)