You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Bash脚本循环执行nslookup仅运行一次的原因是什么?

故障根因

你代码里的exec命令是导致循环提前终止的核心原因:

  • Bash中exec的作用是用指定命令的进程替换当前运行脚本的Shell进程,不会生成新的子进程,exec调用的命令执行完成后,原Shell进程会直接退出,后续的循环逻辑自然没有运行机会。

修复方案

直接删除exec关键字即可,不需要把命令赋值给变量再执行的话,代码可以简化为:

for HOST in $(cat ./rhel_hosts)
do
       echo
       echo "EXECUTING ==> nslookup ${HOST}"
       nslookup ${HOST}
done

额外优化建议

你当前用for循环读文件的写法存在兼容性问题:如果文件行内有空格、通配符等特殊字符,会被Shell自动拆分,导致读取的HOST值不符合预期,更稳妥的逐行读取写法如下:

# 逐行读取文件,兼容行尾无空行、带特殊字符的场景
while IFS= read -r HOST || [ -n "${HOST}" ]
do
    echo
    echo "EXECUTING ==> nslookup ${HOST}"
    nslookup "${HOST}"
done < ./rhel_hosts

内容的提问来源于stack exchange,提问作者T. Ujasiri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 02:21:01