所以我在 python 和 bash 中都这样做了,我即将发布的代码可能有很多问题,但它通常是非常基本的,我看不出它会导致我的这个“错误”的原因很快就会解释.. 我在 Python 中做了同样的事情,但更专业和更干净,它也会导致这个错误(在某些时候,数学会生成一个负数,这是没有意义的。)
#!/bin/bash
while [ 1 ];
do
zero=0
ARRAY=()
ARRAY2=()
first=`command to generate a list of numbers`
sleep 1
second=`command to generate a list of numbers`
# so now we have two data sets, 1 second between the capture of each.
for i in $first;
do
ARRAY+=($i)
done
for i in $second;
do
ARRAY2+=($i)
done
for (( c=$zero; c<=${#ARRAY2[@]}; c++ ))
do
expr ${ARRAY2[$c]} - ${ARRAY[$c]}
done
ARRAY=()
ARRAY2=()
zero=0
c=0
first=``
second=``
math=''
done
所以脚本抓取一组数据,等待 1 秒,再次抓取,对两组进行数学运算以获得差异,打印出差异。这很简单,而且我在 Python 中也很优雅地完成了它 - 无论我如何不时地这样做,可能是从 3 个循环到 30 个循环,我们将得到负数.. 像这样:
开始 0 0 0 0 0 19 10 563 0 -34 19 14 2 0 -1302 1198 -532 639 -1078 1119 1 0 0 -843 33 880 0 5 -8 -13508 8773 4541 988 181 -12 -205 217 -9 7 1 -360 303 60 1 0 0 -12 -96 98 3 -870 904 -130 -2105 2264 6 -3084 1576 1650 -939 971 -2249 1150 1281
-693 9 513 142 76 expr:语法错误
请帮忙,我根本找不到任何关于这个的东西。
按要求输出样例:
ARRAY1 OUTPUT
1 15 1 25 25 1 2 1 3541 853 94567 42 5 1 351 51 1 11 1 13 7 14 12 3999 983 5 1938 3 8287 40 1 1 1 5253 706 1 1 1 1 5717 3 50 1 85 100376 17334 4655 1 1345 2 1 16 1777 1 3 38 23 8 32 47 781 947 1 1 206 9 1 3 2 81 2602 7 158 1 1 43 91 1 120 6589 6 2534 1092 1 6014 7 2 2 37 1 1 1 80 2 1 1270 15448 66 1 10238 1 10794 16061 4 1 1 1 9754 5617 1123 926 3 24 10 16
ARRAY2 OUTPUT
1 15 1 25 25 1 2 1 3555 859 95043 42 5 1 355 55 1 11 1 13 7 14 12 4015 987 5 1938 3 8335 40 1 1 1 5280 706 1 1 1 1 5733 3 50 1 85 100877 17396 4691 1 1353 2 1 16 1782 1 3 38 23 8 32 47 787 947 1 1 206 9 1 3 2 81 2602 7 159 1 1 43 91 1 120 6869 6 2534 1092 1 6044 7 2 2 37 1 1 1 80 2 1 1270 15563 66 1 10293 1 10804 16134 4 1 1 1 9755 5633 1135 928 3 24 10 16
START