使用内置测试将我的变量与数组进行比较失败,错误为"Syntax error in expression"
。
我尝试使用==和-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 $@
我期望使用./script.sh input.txt
调用包含1000个以上整数的脚本时,可以在$ FREQ数组中找到$ TOTAL。
答案 0 :(得分:0)
我不确定我是否知道您要执行的操作,但是请尝试查找表。
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"
尽管如此,但我认为除非有一些是负数,否则它将不会达到已知的频率。