gpt4 book ai didi

linux - 如何使用 bash 内置的 test [ ] 在数组中搜索变量?

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:07 27 4
gpt4 key购买 nike

使用内置测试将我的变量与数组进行比较失败,错误为 “表达式中的语法错误”

我尝试使用 == 和 -eq 重新引用 var_names,以及 8 多年前来自 SO 问题的一些老技巧。

#!/bin/bash

TOTAL=0
declare -a FREQ=(0);

main(){
for i in $(cat "$1");
do
TOTAL=$(( $i + FREQ[-1] ))
echo Total is $TOTAL

if [[ $TOTAL -eq "${FREQ[@]}" ]];
then
echo "Matching Frequency Found: " $TOTAL
exit
else
FREQ=(${FREQ[@]} $TOTAL)
fi

done

return $TOTAL
return $FREQ
}

main $@

当使用包含超过 1000 个整数的 ./script.sh input.txt 调用脚本时,我希望在 $FREQ 的数组中找到 $TOTAL。

最佳答案

我不确定我是否了解您要执行的操作,但请尝试使用查找表。

TOTAL=0
declare -a FREQ=(0)
declare -A lookup=( [0]=1 )
while read -r i
do TOTAL=$(( $i + FREQ[-1] ))
if (( ${lookup[$TOTAL]} ))
then echo "Matching Frequency Found: " $TOTAL
exit
else lookup[$TOTAL]=1
FREQ+=($TOTAL)
fi
done < "$1"

不过,按照这种逻辑,我认为它永远不会达到已发现的频率,除非其中一些频率是负的...

关于linux - 如何使用 bash 内置的 test [ ] 在数组中搜索变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53889445/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com