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

标签 bash for-loop arguments

我正在尝试编写一个 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

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

for i in {2..5}

给你一个包含 2、3、4 和 5 的循环。但是它不起作用。

如果我在循环中回显 $ip 并运行它,例如

reverselookup.sh 192.168.10 21 50

它给了我

{21..50}

有谁知道这是否可行? 还是我必须重新考虑我的方法?

提前致谢。

最佳答案

可以使用seq来替换

for ip in {$2..$3}

说:

for ip in $(seq $2 $3)

关于bash - 在 for 循环中使用命令行参数 (bash),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18975347/

相关文章:

json - 使用 bash 从 json 数组中检索多个值

java - For 循环在 if 情况下不运行

r - 在 R 中使用嵌套 for 循环创建数据框

bash - 如何确定我所在的当前交互式 shell(命令行)

linux - 如何在 bash 的数组中仅存储唯一值?

bash - 在 unix :///var/run/docker. sock 处对 Docker 守护程序套接字的权限被拒绝

c++ - 在处理之前评估宏参数

c++ - 错误 : expression must have integral or unscoped enum type when incrementally filling in vectors

java - 如何将这个 while 循环转换为 for 循环?

python - 如何将所有被调用的函数参数变成一个(Python 3)