I'm trying to keep a external counter in my bash script.
As most of the script is specific to what it's for, I'm only going to insert the pertinent parts that I can't seem to get working. Everything before does get defined. Also before someone comments about the cat, I tried (< $TMPFILE) as well. The issue appears to be not writing to the file.
#!/bin/bash
TMPFILE="/tmp/nettestnum"
if [ -e "$TMPFILE" ]; then I=$(cat $TMPFILE); else I="1"; fi
nettest_start() {
    grep -q "/root/bin/nettest" /etc/rc.local
    if [ $? -eq 1 ]; then
        sed -i 's|touch /var/lock/subsys/local|touch /var/lock/subsys/local \&\& /root/bin/nettest|' /etc/rc.local 2>&-
        echo "Script started at $DATEVAL"  >> "$LOGFILE" 2>&1
        echo "Script will run every $TIMELb minutes, $LIMIT times"
        touch "$TMPFILE"
        nettest_run
    else
        echo "Nettest is already started and will relaunch upon next reboot"
    fi
}
nettest_run() {
    echo "$DATE : Starting scan" >> "$LOGFILE" 2>&1
    #
    while [[ "$I" -lt "$LIMIT" ]]
    do
        echo "$DATE : Starting scan" >> "$LOGFILE" 2>&1
        #
        HOSTS="$(...)"
        for myHost in $HOSTS
        do
            PING=$(ping -f -c $COUNT "$myHost" |grep 'rtt' | awk '{print $4}')
            echo "$myHost / $PING" >> "$LOGFILE" 2>&1
        done
        echo "$DATEVAL : Finished" >> "$LOGFILE" 2>&1
        echo "$DATEVAL : Netstat Start" >> "$STATLOG" 2>&1
        netstat -s |egrep -i "dropped|loss|reject|timeout|invalid" >> "$STATLOG" 2>&1
        echo "$DATEVAL : Netstat Finished" >> "$STATLOG"G 2>&1
        echo "." >> "$LOGFILE" 2>&1
        sleep "$TIMEL"
        let I++ || true
        set +C
        echo "$I" > "$TMPFILE"
    done
}
Edit 4: re-added } and showing both functions.
I also need to figure out how to write an exit for the loop, but I'm pretty sure that's just a [ $? = 0 ]
Edit: An example of some of the output I'm seeing when I run a status command (built into the script)..
Nettest is enabled on startup
PID number: 6059
Nettest is actively running in memory
On iteration  of 100
iteration shows 1 on the first run.
Edit 2: redid the sample with full example, minus customized commands.
 
     
     
     
    