【发布时间】:2020-07-22 08:46:39
【问题描述】:
目标:将输入文件的每一行(“字符串”)与由字符串组成的关联数组进行比较。
function watchlist ()
{
declare -A flagged_ip # static arr. holds suspect ipaddr's
while read -r ipaddr
do
for y in "${RA[labl]}"
do
if [ "$ipaddr" == "$y" ]
then
# setup arr. to hold all matching ipaddr(s)
flagged_ip+=( $ipaddr )
fi
done
done < "$ipfile" # txt ipfile composed of designated ip's
}
问题:目前该函数的比较输出为空白。 “while 循环”似乎正在正确运行,但“for 循环”似乎没有正确处理比较。
添加。详细信息:该函数的目的是获取用户提供的输入文件(由已知 ip 组成)并将它们与访问日志 ip 数组进行比较。最后,我想将比较的每个匹配项传递到一个数组中,然后打印该数组,以便用户可以看到哪些项目是成功匹配的。
对于任何不好或不正式的英语,我深表歉意
【问题讨论】:
-
将
"$ipaddr" == "$y"更改为"$ipaddr" = "$y"。 -
我进行了更改,我理解您为什么建议这样做(谢谢),但在执行
echo "${flagged_ip[@]} "时,我似乎仍然得到一个空白输出 -
您是否真的在脚本中的任何位置调用
watchlist? -
我的错 bruv 需要对
$ipfile值进行一些更改,这取决于我而不是你。专门制作了一些模组ipfile="$(cat "${@: -1}")"。谢谢大家,字符串比较不正确我现在意识到 -
您的函数中的
labl是什么?如果它是一个变量,它应该是$labl。它在哪里设置/增加?
标签: arrays bash for-loop while-loop