LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 982|回复: 9

问第三个被耻笑的问题....(不要改标题了....我菜我可以,我菜固我在)

[复制链接]
发表于 2004-8-17 11:01:10 | 显示全部楼层 |阅读模式
#!/bin/sh
#Filename:choose
#This script is used to investigate ur interest in PC Game
echo "LZ chose ur favorite PC game"
cho="CS Warcraft others "     
select i in $cho ; do
   case $i in
      CS)
       echo " U r as bright as I am !"
       break;
       ;;
      Warcraft)
       echo " for God's sake !"
       break;
       ;;
      others)
       echo "boring guy ..."
       break;
       ;;
      *)
       echo "quiting...PLZ wait..."
       break;
       ;;
   esac  
  done
echo "   "
echo "do u want choose again?"
echo "   1 for yes"
echo "   other choices will be defaultly mean no"
cho2="rechoose"
select o in $cho2 ; do
case $o in
rechoose) ;;
*)
   break ;;
esac
done

我没有一点编程基础,所以问五个很菜的问题:
1.第一个case里  echo "quiting...PLZ wait..."下面用break显然不能停止整个程序,怎么才能做到?(我曾用了exit,结果!@#$%#)
2.我想在rechoose)这里实现重新选择,即回到第一个select再选游戏,怎么做到呢?
3.后面的几个echo可不可以既分行显示又能在代码里用同一行表示?
4.能不能将我的代码修改得更简洁?
5.发贴的时候怎么贴代码啊??

谢谢了!!!!!!!!!!
 楼主| 发表于 2004-8-17 22:16:27 | 显示全部楼层
怎么没人回答
发表于 2004-8-18 09:17:11 | 显示全部楼层

  1. 1      你用了exit后,到底怎么样了
  2. 2,4   这两个问题自己再考虑考虑
  3. 3      echo "adfasfd" ; echo "afasdfasdf"   中间加分号就行了
  4. 5      在代码前后分别加 (code) 和 (/code),把圆括号换成方括号
复制代码
 楼主| 发表于 2004-8-18 11:02:02 | 显示全部楼层
用exit后黑屏了,但是及其还在运转,盲打(也只能盲打)reboot可以重起
我就是主要想解决第二个问题,我想到了用continue[n]来跳出循环,主要是我刚刚学掌握得太少了,运用就麻烦。
谢谢!!
发表于 2004-8-18 12:51:40 | 显示全部楼层
1  我试了用 exit 没问题呀
2  你可以搞个大循环把两次  select 都包进去嘛,循环结束前设置一个变量表明状态,即是否进行下一次循环
    其实第 1 个问题也可以用状态变量解决,先 break 出去,然后判断状态决定是否退出。不过这样好像挺傻的,你自己再考虑考虑吧

不知道 shell 里有没有办法实现类似  goto 的功能
 楼主| 发表于 2004-8-18 16:17:23 | 显示全部楼层

受到一篇文章启发后,重新编写如下:


  1. #!/bin/sh
  2. #This script is used to investigate ur interest in PC Game
  3. cho () {
  4. echo "PLZ choose ur favorite PC game"
  5. echo "CS(or C) Warcraft(or W) Others(or O) Quit(or Q)"  
  6. read i      
  7.   case $i in
  8.        [Cc]|[Cc][Ss])
  9.        echo "I also like AK and AWP"
  10.        ;;
  11.        [Ww]|[Ww][Aa][Rr][Cc][Rr][Aa][Ff][Tt])
  12.        echo "too old a game!"
  13.        ;;
  14.        [Oo]|[Oo][Tt][Hh][Ee][Rr][Ss])
  15.        echo "boring guy ..."
  16.        ;;
  17.        [Qq]|[Qq][Uu][Ii][Tt]|*)
  18.        echo "quiting...PLZ...waiting"
  19.        exit 0
  20.        ;;
  21.   esac
  22. }
  23. cho2 () {
  24. echo "Do u want to choose again?[Y/N]"
  25. read YN
  26. case $YN in
  27.       [Yy]|[Yy][Ee][Ss])
  28.       cho
  29.       ;;
  30.       *)
  31.       echo "quiting...PLZ...waiting"
  32.       exit 0
  33.       ;;
  34. esac
  35. }
  36. cho
  37. cho2
复制代码

解决了重新选择的问题而且结构比以前那个简单多了,但是为什么我用exit 0会跳回登陆提示符,我又的重新登陆??
发表于 2004-8-18 16:52:20 | 显示全部楼层
你是怎么运行脚本的?
 楼主| 发表于 2004-8-18 19:12:35 | 显示全部楼层
. choose
发表于 2004-8-19 09:12:39 | 显示全部楼层
这样就使得所有命令在当前shell有效了,所以exit会退出到登录状态
应该用
sh choose
或者
chmod +x choose
./choose
 楼主| 发表于 2004-8-19 17:27:04 | 显示全部楼层
哦,原来如此,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表