OpenWrt Bash shell for循环识别斜杠

OpenWrt Bash shell for loop recognize slash

Bash在OpenWrt中,在/etc下有一个文件foreign.txt,内容如下: 1.0.0.0/24

当我使用 for i in ``cat /etc/foreign.txt``; do ipset add redir $i;done 时,/ 被视为',显示'24 numerror。

但是当我尝试 for i in ``cat /etc/foreign.txt``; do echo $i;done 它显示正确的 /.

shell 如何在 ipset 命令中正确处理它?

谢谢。

您的问题/24后有多个特殊字符。查看此命令的输出:

wget -qO - 'http://whosebug.com/revisions/36fdcac2-c6a6-4dd8-aad4-75af2d16827e/view-source' | cat -v

我建议使用:

tr -cd '0-9./\n' </etc/foreign.txt | while read -r i; do echo ipset add redir "$i"; done

如果一切正常,请删除 echo


tr 命令删除 /etc/foreign.txt 中的所有字符,但 09、点、斜杠和换行符。