Linux Lite Forums

General => Suggestions and Feedback => Topic started by: Tegid on March 26, 2017, 04:06:21 PM

Title: Shell script returning divide by zero error
Post by: Tegid on March 26, 2017, 04:06:21 PM
'lite-tweaks-super' returning the following error:


Code: [Select]
:~/$ 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: [Select]
## 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
Title: Re: Shell script returning divide by zero error
Post by: ralphy on March 26, 2017, 04:27:49 PM
'lite-tweaks-super' returning the following error:


:~/$ 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:


## 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


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.
Title: Re: Shell script returning divide by zero error
Post by: Tegid on March 26, 2017, 04:44:42 PM
Ha, cheers, those pesky assumptions again.