[嵌入式linux] 新手问一个简单的shell问题,请帮忙。

[复制链接]
3415|11
 楼主| ll_211314 发表于 2010-2-24 10:03 | 显示全部楼层 |阅读模式
看到一个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
while循环是不是死循环,case语句当输入的不是yes和no的时候是怎么执行的,还有下面的if语句是yes_or_no返回0时为真?
如果您不嫌烦就帮忙大概讲一个这个程序,谢了。
}
 楼主| ll_211314 发表于 2010-2-24 11:26 | 显示全部楼层
看来没人回答了,等我自己再研究吧,进来个人,我结贴给分。
sinanjj 发表于 2010-2-24 11:45 | 显示全部楼层
这个程序谁写的。有问题啊。

应该这样
 楼主| ll_211314 发表于 2010-2-24 11:47 | 显示全部楼层
3# sinanjj

是《linux程序设计》里的程序,我看的不太懂,版主帮看看。
sinanjj 发表于 2010-2-24 11:51 | 显示全部楼层
#!/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
sinanjj 发表于 2010-2-24 11:51 | 显示全部楼层
本帖最后由 sinanjj 于 2010-2-24 11:54 编辑

主要考察shell程序的参数。

LZ自己运行测试下。就知道了。

从书上拷贝的时候”不是英文字符。

怪不得我觉得这么奇怪。。。。

$1是参数1, 以此类推。

$*是所有参数。
 楼主| ll_211314 发表于 2010-2-24 11:54 | 显示全部楼层
我运行了。
* ) echo Answer yes or no这个地方不太懂,还有就是那个while如果在c里应该是个死循环啊。
sinanjj 发表于 2010-2-24 11:57 | 显示全部楼层
当然是死循环啊。

不是还有return吗。

就是直接return出函数了。给C是一样的。
 楼主| ll_211314 发表于 2010-2-24 11:58 | 显示全部楼层
应该是return语句就直接跳出函数了。
sinanjj 发表于 2010-2-24 11:59 | 显示全部楼层
你这不自己会分析吗。。。。。。。。。。。
 楼主| ll_211314 发表于 2010-2-24 12:01 | 显示全部楼层
本帖最后由 ll_211314 于 2010-2-24 12:02 编辑

呵呵,是你提示了一下想起来了,谢谢斑竹了,给分了。
WandyLau 发表于 2011-10-6 17:03 | 显示全部楼层
你的问题解决了么?我也看这本书,最近也看到这里了。是个死循环。我执行了。我也想到了return的返回值了。可是不行,跳不出while循环。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

38

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部