回 帖 发 新 帖 刷新版面

主题:为啥输出结果是这样???

下面是一个shell的程序:
#!/bin/sh

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


echo "Original parameters are $*"

if yes_or_no "$1"
then
  echo "Hi $1, nice name"
else
  echo "Never mind"
fi
exit 0

输出结果如下:
$ ./my_name Rick Neil
Original parameters are Rick Neil
Is your name Rick ?
Enter yes or no: yes
Hi Rick, nice name

为什么输入yes后,函数yes_or_no不是返加0么,怎么会输出Hi Rick, nice name????
请指教,谢谢!!!

回复列表 (共3个回复)

沙发

这不正说明脚本好像是正确的吗?
输出 Hi * ,cice name ?
不就是返回零吗?
返回0才是真!!!
你那样 
$1= Rick
$2=Neil
因为有空格!

板凳


二楼能讲清楚点么????好像说的有点乱.....

我是想知道,后面的判断语句if根据我输入的yes返回0结果后,
不是要执行else后面的输出语句:Never mind么????

难道if判断:当为真时是0,假时是1????

3 楼

对了一般来说
程序以0退出
表示正常退出
所以shell就以
0 为真
表示程序正常退出
非0为假
表示程序非正退出
当然了实际上 可能不是
这要看程序员的喜好
shell 就的办断 就 0 为真 非0为假

我来回复

您尚未登录,请登录后再回复。点此登录或注册