如果不存在,如何添加未命名的 uci 部分?

How to add unnamed uci section if not exist?

我想通过 uci 配置 ipsec(总是 ipsec[0])。如果 ipsec 部分存在,一切正常。我可以使用 uci ipsec.@ipsec[0].type='tunnel' 修改 ipsec。但是,如果 ipsec 部分不存在,则此命令不起作用。如果 ipsec 部分不存在,我想添加。

我找到的唯一方法是使用 shell 脚本

if ! uci -q show ipsec.@ipsec[0]
then
    uci add ipsec ipsec
fi

uci show ipsec 将显示 ipsec[0] 以外的配置,因此条件将变为 false,您最终将添加 ipsec[0] ipsec[1] 的多个配置 您可以通过以下方式完成此操作。

config ipsec
     option type 'tunnel'

type_present=`uci -q get ipsec.@ipsec[0]`
if [ "$type_present" = ""]; then
      uci add ipsec ipsec
      uci commit ipsec
fi

如果你只有一个配置 ipsec 那么你可以命名那个配置部分

config ipsec 'my_ipsec' # my_ipsec is named config

而且您可以通过更好的方式访问它

uci get ipsec.my_ipsec.type

使用 -q -> 完全模式,如果找不到条目和 return 空白字符串,则不会通过错误。