打印
[嵌入式linux]

新手问一个简单的shell问题,请帮忙。

[复制链接]
1817|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程序设计》里的程序,我看的不太懂,版主帮看看。

使用特权

评论回复
5
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

使用特权

评论回复
6
sinanjj| | 2010-2-24 11:51 | 只看该作者
本帖最后由 sinanjj 于 2010-2-24 11:54 编辑

主要考察shell程序的参数。

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

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

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

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

$*是所有参数。

使用特权

评论回复
7
ll_211314|  楼主 | 2010-2-24 11:54 | 只看该作者
我运行了。
* ) echo Answer yes or no这个地方不太懂,还有就是那个while如果在c里应该是个死循环啊。

使用特权

评论回复
8
sinanjj| | 2010-2-24 11:57 | 只看该作者
当然是死循环啊。

不是还有return吗。

就是直接return出函数了。给C是一样的。

使用特权

评论回复
9
ll_211314|  楼主 | 2010-2-24 11:58 | 只看该作者
应该是return语句就直接跳出函数了。

使用特权

评论回复
10
sinanjj| | 2010-2-24 11:59 | 只看该作者
你这不自己会分析吗。。。。。。。。。。。

使用特权

评论回复
11
ll_211314|  楼主 | 2010-2-24 12:01 | 只看该作者
本帖最后由 ll_211314 于 2010-2-24 12:02 编辑

呵呵,是你提示了一下想起来了,谢谢斑竹了,给分了。

使用特权

评论回复
12
WandyLau| | 2011-10-6 17:03 | 只看该作者
你的问题解决了么?我也看这本书,最近也看到这里了。是个死循环。我执行了。我也想到了return的返回值了。可是不行,跳不出while循环。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

38

帖子

0

粉丝