openwrt中使用sed和uci报错

被人在网上找的脚本

#!/bin/bash
wget https://cdn.staticaly.com/gh/XIU2/TrackersListCollection/master/http.txt -O /tmp/best_aria2.txt
[ -s /tmp/best_aria2.txt ] || exit 0 
tmp=$(cat /tmp/best_aria2.txt)

uci set aria2.main.bt_tracker=$tmp
uci commit aria2
/etc/init.d/aria2 restart

运行后一直报

Usage: uci []  []

将第六行改为

uci set aria2.main.bt_tracker=tmp

(去掉了一个$)后可以正常运行,但tracker目录变成 tmp 。请问要怎么修改
我真的不知道哪里有违规词组

这个问题是因为在第六行中,你使用了一个$符号来获取变量tmp的值,而不是将变量tmp的值作为字符串传递给uci set命令。

通过移除$符号来解决这个问题,但是这样会导致变量tmp的值直接被插入到uci set命令中,所以不能正确的设置tracker。

正确的方法是在双引号中包含变量,这样可以将变量的值作为字符串传递给uci set命令。

uci set aria2.main.bt_tracker="$tmp"

这样就能正确的设置tracker。