Chinaunix首页 | 论坛 | 博客
  • 博客访问: 346945
  • 博文数量: 38
  • 博客积分: 1289
  • 博客等级: 中尉
  • 技术积分: 533
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-10 22:30
个人简介

Good Good Study. Day Day Up.

文章分类

全部博文(38)

文章存档

2018年(1)

2016年(3)

2015年(12)

2014年(7)

2013年(10)

2012年(5)

分类: 系统运维

2014-08-08 13:53:48

sh 不像 bash 和 ksh 那样可以非常方便的定义和使用数组,但是可以通过其它方式来模拟数组。

【方法1】通过 set 命令和位置参数来模拟数组

点击(此处)折叠或打开

  1. # 定义数组
  2. set 'word 1' word2 word3

  3. # 输出数组的第一个元素
  4. echo $1

  5. # 输出数组的第二个元素
  6. echo $2

  7. # 输出数组的第三个元素
  8. echo $3

  9. # 输出数组的所有元素
  10. echo $*
  11. echo $@

  12. # 向数组中增加一个元素
  13. set -- "$@" word4
  14. echo $4

  15. # 查看数组元素的个数
  16. echo $#

  17. # 遍历数组元素
  18. for i in do "$@"; do
  19.     echo "$i"
  20. done

  21. # 从数组中删除一个元素
  22. shift
  23. echo $@

  24. # 删除数组的所有元素
  25. set x; shift

【方法2】使用 eval 命令模拟数组

定义数组并遍历数组元素:

点击(此处)折叠或打开

  1. #!/bin/sh
  2. eval a1=word1
  3. eval a2=word2
  4. eval a3=word3
  5. for i in 1 2 3; do
  6.     eval echo "The $i element of array is: \$a$i"
  7. done

根据用户输入的一句话来定义数组并遍历数组元素:

点击(此处)折叠或打开

  1. #!/bin/sh
  2. echo "Enter the sentence:"
  3. read str
  4. n=0
  5. for word in $str; do
  6.     n=`expr $n + 1`
  7.     eval a$n="$word"
  8.     eval echo "The $n element of array is: \$a$n"
  9. done
阅读(4627) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~