Two conditions in a bash if statement

后端 未结 8 2081
失恋的感觉
失恋的感觉 2020-12-17 08:36

I\'m trying to write a script which will read two choices, and if both of them are \"y\" I want it to say \"Test Done!\" and if one or both of them isn\'t \"y\" I want it to

相关标签:
8条回答
  • 2020-12-17 09:16

    The program is doing exactly what you told it to do. You said "If the first choice is not equal to 'y' and the second choice is not equal to 'y' then print "Test Done !" otherwise print "Test Failed !" -- so only if both choices are not y will "Test Done !" be printed.

    You probably meant:

    echo "- Do You want to make a choice ?"
    read choice
    
    echo "- Do You want to make a choice1 ?"
    read choice1
    
    if [ "$choice" == 'y' ] && [ "$choice1" == 'y' ]; then
    echo "Test Done !"
    else
    echo "Test Failed !"
    fi
    

    I changed != not equals to == equals. Now only if you answer "y" to both questions will "Test Done !" be printed.

    0 讨论(0)
  • 2020-12-17 09:17

    You got the comparison logic backwards; from your description you wanted to say

    if [ "$choice" = 'y' ] && [ "$choice1" = 'y' ]; then
    

    I'm actually surprised that the && construct works, although on further inspection it probably should. Still, I would write it as

    if [ "$choice" = 'y' -a "$choice1" = 'y' ]; then
    
    0 讨论(0)
提交回复
热议问题