Linux Lite Forums
Shell script returning divide by zero error - Printable Version

+- Linux Lite Forums (https://www.freecinema2022.gq/forums)
+-- Forum: General (https://www.freecinema2022.gq/forums/forumdisplay.php?fid=4)
+--- Forum: Suggestions and Feedback (https://www.freecinema2022.gq/forums/forumdisplay.php?fid=13)
+--- Thread: Shell script returning divide by zero error (/showthread.php?tid=3869)



Shell script returning divide by zero error - Tegid - 03-26-2017

'lite-tweaks-super' returning the following error:


Code:
:~/$ lite-tweaks-super
/usr/bin/lite-tweaks-super: line 812: ((: PERCENTAGE = 100 * 1 / 0 : division by 0 (error token is "0 ")

The 'while read  line' loop should not in theory at least by the looks execute any iterations if '$TOTAL_LINES' is zero, my scripting is largely POSIX (blame BSD) and not Bash so off the top of my head I'm not entirely sure what is going on here:


Code:
## Arrays execution
run_icon=/usr/share/icons/Faenza/actions/32/system-run.png
x=0
for k in "${!ARRAYC}"; do  x=$(( $x + 1 )); done  # Get the total number of selected items in the array

    TOTAL_LINES=$x

    printf '%s \n' "${ARRAYC}"|
    while read  line
        do
            $line     # Execute functions one by one
            if [ $? = 1 ]; then
                zenity --info --title=" Lite Tweaks" --text="Error:\n${line}"
            fi
        let i++
         (( PERCENTAGE = 100 \* ${i} / ${TOTAL_LINES} ))
         echo "$PERCENTAGE"

        if [ "$PERCENTAGE" == "100" ]; then
            echo "#Done"
            sleep 1
        fi



Re: Shell script returning divide by zero error - ralphy - 03-26-2017

(03-26-2017, 08:06 PM)Tegid link Wrote: 'lite-tweaks-super' returning the following error:

[tt]
:~/$ lite-tweaks-super
/usr/bin/lite-tweaks-super: line 812: ((: PERCENTAGE = 100 * 1 / 0 : division by 0 (error token is "0 ")
[/tt]

The 'while read  line' loop should not in theory at least by the looks execute any iterations if '$TOTAL_LINES' is zero, my scripting is largely POSIX (blame BSD) and not Bash so off the top of my head I'm not entirely sure what is going on here:

[tt]
## Arrays execution
run_icon=/usr/share/icons/Faenza/actions/32/system-run.png
x=0
for k in "${!ARRAYC[@]}"; do  x=$(( $x + 1 )); done  # Get the total number of selected items in the array

    TOTAL_LINES=$x

    printf '%s \n' "${ARRAYC[@]}"|
    while read  line
        do
            $line    # Execute functions one by one
            if [ $? = 1 ]; then
                zenity --info --title=" Lite Tweaks" --text="Error:\n${line}"
            fi
        let i++
        (( PERCENTAGE = 100 \* ${i} / ${TOTAL_LINES} ))
        echo "$PERCENTAGE"

        if [ "$PERCENTAGE" == "100" ]; then
            echo "#Done"
            sleep 1
        fi

    done| zenity --progress --width=320 --window-icon="$run_icon" --pulsate --no
[/tt]

Looks to me you are calling lite-tweaks-super instead of lite-tweks. Call lite-tweaks instead which is the one that passes all arrays to lite-tweak-super when needed.


Re: Shell script returning divide by zero error - Tegid - 03-26-2017

Ha, cheers, those pesky assumptions again.