小编the*_*lic的帖子

(ba)sh 参数扩展在脚本和交互式 shell 中不一致

在尝试编写用于设置 VPN 默认路由度量的脚本时,我遇到了以下参数扩展问题。

出于测试目的,我已将代码简化为以下内容:

vpn_route='default via 10.106.160.1 proto static metric 50'

echo ip route del "$vpn_route"
echo ip route add "${vpn_route/metric +([0-9])/metric 101}"
echo ip route add "${vpn_route/%metric */metric 101}"
Run Code Online (Sandbox Code Playgroud)

一旦我删除了 echo 命令,这应该

  1. 删除现有的默认路由
  2. 创建一个新的路线,metric <number>部分替换为metric 101

为了测试,我添加了第二个具有不太具体模式的变体。

如果我在交互式 bash shell 中执行此代码,它会按预期工作:

$ vpn_route='default via 10.106.160.1 proto static metric 50'
$ echo ip route del "$vpn_route"
ip route del default via 10.106.160.1 proto static metric 50
$ echo ip route add "${vpn_route/metric +([0-9])/metric 101}"
ip route add …
Run Code Online (Sandbox Code Playgroud)

shell bash shell-script

7
推荐指数
1
解决办法
178
查看次数

标签 统计

bash ×1

shell ×1

shell-script ×1