admin管理员组

文章数量:1355694

I don't know why, but only the '0' option works, unless the 'clear' command is removed or commented out. See the script:

NUMERO=-1
while [ $NUMERO -ne 0 ]; do
    clear
    echo "------ M E N U ------"
    echo "1 - Primeira opção"
    echo "2 - Segunda opção"
    echo "3 - Terceira opção"
    echo "0 - Sair"

    while true; do
        read -p "Opção: " NUMERO
        [[ -n "$NUMERO" ]] && break
    done

    if [ $NUMERO == 1 ]; then
        echo "Você escolheu a opção $NUMERO"        
    elif [ $NUMERO == 2 ]; then
        echo "Você escolheu a opção $NUMERO"
    else
        echo "Você escolheu a opção $NUMERO"
    fi
done

After adding 'exec 3>trace.log; BASH_XTRACEFD=3; set -x' to the beginning of the script, I got the following content in the trace.log file:

+ NUMERO=-1
+ '[' -1 -ne 0 ']'
+ clear
+ echo '------ M E N U ------'
+ echo '1 - Primeira opção'
+ echo '2 - Segunda opção'
+ echo '3 - Terceira opção'
+ echo '0 - Sair'
+ true
+ read -p 'Opção: ' NUMERO
+ [[ -n 1 ]]
+ break
+ '[' 1 == 1 ']'
+ echo 'Você escolheu a opção 1'
+ '[' 1 -ne 0 ']'
+ clear
+ echo '------ M E N U ------'
+ echo '1 - Primeira opção'
+ echo '2 - Segunda opção'
+ echo '3 - Terceira opção'
+ echo '0 - Sair'
+ true
+ read -p 'Opção: ' NUMERO
+ [[ -n 0 ]]
+ break
+ '[' 0 == 1 ']'
+ '[' 0 == 2 ']'
+ echo 'Você escolheu a opção 0'
+ '[' 0 -ne 0 ']'

本文标签: if statementShell scripting effect of 39clear39 command on conditional control structureStack Overflow