Chinaunix首页 | 论坛 | 博客
  • 博客访问: 254074
  • 博文数量: 34
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 961
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-11 17:19
个人简介

没有最好的语言,只有最适合的语言。

文章分类

全部博文(34)

文章存档

2016年(2)

2013年(32)

我的朋友

分类: LINUX

2013-07-14 13:42:44

shell编程中注意的点:
假如定义了一个array=(xian fuzhou)
其中echo ${array[*]}             echo ${array[@]}都表示打印数组的所有元素
${#array[*]}    #这句表示输出数组的长度
而   ${#array[1]}  输出的结果是6 这句表示的是数组中下标为1的数的长度 本例中即使fuzhou

下面是shell 数组实现堆栈的例子

点击(此处)折叠或打开

  1. #!bin/bash
  2. #演示利用数组实现堆栈的方法
  3. #chenshuanglin 2013/7/14
  4. MAXTOP=5 #堆栈所能存放元素的最大值
  5. declare TOP=0 #定义栈顶指针,初始值为0
  6. TEMP= #定义一个临时全局变量,存放出栈元素,初始值为空
  7. declare -a STACK #定义一个全局数组
  8. #进栈操作,可以同时将多个元素压入栈顶
  9. push()
  10. {
  11. if [ -z "$1" ] #若无输入任何参数,立即返回
  12. then
  13. return
  14. fi
  15. while [ $# != 0 ] #$#表示参数的个数
  16. do
  17. if [ "$TOP" = $MAXTOP ]
  18. then
  19. echo "已经到栈顶了,无法在进行压栈操作"
  20. return
  21. fi
  22. let TOP=TOP+1 #栈顶加1
  23. STACK[$TOP]=$1 #将第一个参数压入堆栈
  24. shift #脚本参数左移一位,$#减1
  25. done
  26. return
  27. }
  28. #pop函数用于出栈操作
  29. pop()
  30. {
  31. TEMP= #清空出栈数据这个临时变量
  32. if [ "$TOP" = "0" ] #若堆栈为空,无法进行出栈操作
  33. then
  34. echo "对栈为空,无法进行出栈操作"
  35. return
  36. fi
  37. TEMP=${STACK[$TOP]}
  38. unset STACK[$TOP]
  39. let TOP=TOP-1
  40. return
  41. }
  42. #显示当前堆栈内的信息,以及TOP指针
  43. show_stack()
  44. {
  45. echo "-----------------------------"
  46. echo "----------STACK--------------"
  47. for i in ${STACK[@]}
  48. do
  49. echo $i
  50. done
  51. echo
  52. echo "TOP=$TOP"
  53. }
  54. #以下是测试堆栈功能的片段
  55. push chenshuanglin
  56. show_stack
  57. push xian beijing fuzhou shanghai shijian
  58. show_stack
  59. pop
  60. echo $TEMP
  61. pop
  62. echo $TEMP
  63. show_stack
  64. push najing
  65. push yanan
  66. show_stack


阅读(3315) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~