bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: It is possible that this can be a bug


From: Greg Wooledge
Subject: Re: It is possible that this can be a bug
Date: Mon, 26 Jun 2023 13:34:55 -0400

On Mon, Jun 26, 2023 at 03:36:58PM -0300, Hugo Napoli wrote:
> #!/bin/bash
> 
> clear
> 
> echo ""
> read -p "Ingrese  un  número entero de hasta 2 cifras
>   : " min
> read -p "Ingrese otro número entero de hasta 2 cifras, mayor que el
> anterior  : " max
> 
> if [[ ${#min} -gt 2 ]] || [[ ${#max} -gt 2 ]];then
>     clear
>     echo "" && echo "Deben ser números de hasta 2 cifras..."
>     read -p "Pulse ENTER para continuar..."
>     bash "$0"
> fi

You really don't want to use bash "$0" here.  That runs a new instance
of your script, but it leaves the old one suspended in memory, waiting
for the new instance to finish.  Once the new instance finishes, the
original instance continues.  So, depending on how many times the
user gives bad input, you could have dozens or hundreds of instances
of your script in memory simultaneously, and once the user gives valid
input, they'll all run, one after the other, in reverse order, using the
bad inputs.

If you want to loop until the user gives valid input, use while or until.

#!/bin/bash

while true; do
    clear
    echo
    read -p "Ingrese  un  número entero de hasta 2 cifras : " min
    read -p "Ingrese otro número entero de hasta 2 cifras, mayor que el 
anterior : " max

    if ((${#min} > 2 || ${#max} > 2)); then
        echo "Deben ser números de hasta 2 cifras..."
        read -p "Pulse ENTER para continuar..."
    elif ((min >= max)); then
        echo "The second number must be larger..."
        read -p "Pulse ENTER para continuar..."
    else
        break
    fi
done

[...]

(I'll let you translate the second error message.  My Spanish is poor.)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]