如何修改Bash脚本实现每个IP的whois结果单独存为文件?
解决方案
直接修改脚本即可实现每个IP的whois结果单独保存为对应IP命名的文件,以下是优化后的版本:
#!/bin/bash while IFS= read -r ip; do # 跳过空行 [[ -z "$ip" ]] && continue echo "正在查询 $ip..." # 将结果写入以IP命名的文件 whois "$ip" > "${ip}.txt" done < iplist.txt
关键改动说明
- 替换循环方式:用
while IFS= read -r ip替代原脚本的for domain in \cat iplist.txt``,这种写法能更安全地读取文件每一行,避免因换行符或特殊字符导致的错误,是处理文本文件的最佳实践。 - 跳过空行:添加
[[ -z "$ip" ]] && continue,避免处理文件中的空行,防止生成无用的空文件。 - 单独保存结果:把原脚本的
>> results.txt改成> "${ip}.txt",每个IP的查询结果会单独写入以该IP命名的TXT文件(比如192.168.1.1.txt)。如果需要保留历史结果,可将>换成>>,但通常覆盖旧结果更合理。 - 变量包裹:用双引号包裹
$ip(即"$ip"),避免特殊字符引发的问题(虽IP地址一般不会有,但养成该习惯能规避潜在风险)。
额外优化建议
若想让结果更整洁,可创建单独目录存放所有whois文件:
#!/bin/bash # 创建结果目录(不存在则自动创建) mkdir -p whois_results while IFS= read -r ip; do [[ -z "$ip" ]] && continue echo "正在查询 $ip..." whois "$ip" > "whois_results/${ip}.txt" done < iplist.txt
执行后,所有IP的查询结果都会存放在whois_results目录下,不会和其他文件混杂。
内容的提问来源于stack exchange,提问作者Ebm_S3c
相关产品推荐
相关产品推荐

