这个剧本中发生了什么?

时间:2015-03-21 06:32:40

标签: linux bash shell

#!/bin/sh

yes_or_no(){

    echo "Is your name $* ?"
    while true 
    do
        echo -n "yes or no"
        read x
        case "$x" in
             y | yes ) return 1;;
             n | no ) return 0;;
            * ) echo "Answer yes or no"
        esac 
    done
    }

if  yes_or_no "$1" 

then

    echo "Hi $1,nice name i"
else

    echo "never mind"
fi

exit 0

输出 - >

./fuction1.sh salman khan

Is your name salman ?

yes or non

Hi salman,nice name i

为什么相反的输出凸轮如果我按否然后输出将永远不会介意,因为功能返回0。 我在这里完全迷茫可以帮助我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

在shell中,事情与其他语言不同。 " 0"是一个成功的代码:

$ true
$ echo $?
0
$ if true ; then echo "True"; fi
True

从上面你可以看到0实际上意味着" 0错误",而除了" 0"会指示错误代码。因此,shell逻辑面向那个而不是C-like,其中0 == False和1 == True