用于循环的OpenWrt Bash shell识别斜杠

时间:2016-04-17 08:59:27

标签: bash shell openwrt

OpenWrt中的Bash,在/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命令中正确处理它?<​​/ p>

感谢。

1 个答案:

答案 0 :(得分:0)

问题中/24后面有多个特殊字符。请参阅此命令的输出:

wget -qO - 'http://stackoverflow.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,点,斜线和换行符。