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

如何在Bash循环中使用`tax[13]-eq-dc`正则表达式?

如何在Bash循环中使用tax[13]-eq-dc正则表达式?

嘿,这个问题我之前也踩过坑!你之所以会遇到ping: unknown host tax[13]-eq-dc的错误,是因为Bash里的[13]并不是正则表达式,而是文件名通配符(glob)——只有当当前目录下确实存在tax1-eq-dc或tax3-eq-dc这两个文件/目录时,它才会自动展开成对应的主机名;如果没有这些文件,Bash就会把整个tax[13]-eq-dc当作一个完整的字符串传递给ping,自然找不到对应的主机啦。

给你两种简单靠谱的解决方法:

  • 最推荐:用Bash大括号扩展
    这是Bash专门用来生成序列或组合的语法,把方括号换成大括号,里面用逗号分隔你想要的数字即可:

    for i in tax{1,3}-eq-dc; do ping -c3 $i; done
    

    执行这条命令时,Bash会直接把tax{1,3}-eq-dc展开成tax1-eq-dc tax3-eq-dc,循环就能依次ping这两个主机了。要是你需要的是连续数字(比如1到5),还能写成tax{1..5}-eq-dc,非常灵活。

  • 备选:用printf生成主机名列表
    如果你习惯用类似printf的方式生成内容,也可以这么写:

    printf "%s\n" tax{1,3}-eq-dc | while read i; do ping -c3 $i; done
    

    效果和上面的方法一样,不过大括号扩展的写法更简洁直观。

⚠️ 注意:别用eval来处理原来的tax[13]-eq-dc写法,虽然可能能临时解决问题,但eval会执行任意传入的命令,万一字符串里不小心混入特殊字符,很容易引发安全问题,尽量避免使用。

备注:内容来源于stack exchange,提问作者boardrider

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 09:53:00