当前位置: 首页 > news >正文

全站仪快速建站垂直 网站开发

全站仪快速建站,垂直 网站开发,网站功防教程,优秀网站开发商本文首先介绍shell的关联数组,然后介绍shell的普通数组,最后总结它们的共同语法。 shell的关联数组 定义一个关联数组,并打印它的key-value对 #!/bin/sh# 声明一个关联数组 declare -A HASH_MAP# 给关联数组赋值 HASH_MAP["Tom"…

本文首先介绍shell的关联数组,然后介绍shell的普通数组,最后总结它们的共同语法。

shell的关联数组

定义一个关联数组,并打印它的key-value对

#!/bin/sh# 声明一个关联数组
declare -A HASH_MAP# 给关联数组赋值
HASH_MAP["Tom"]=130
HASH_MAP["Finix"]=150
HASH_MAP["Jason"]=90  # 遍历关联数组
for key in $(echo ${!HASH_MAP[*]})
dovalue=${HASH_MAP[$key]}echo "$key: $value"
done

执行结果如下:

Finix: 150
Jason: 90
Tom: 130

注意,这里的 ${!HASH_MAP[*]}是一个普通数组,存放的是所有的key.

定义关联数组的时候,也可以一次性写完。如下:

declare -A HASH_MAP=([Finix]=200 [Kate]=100 [Jerry]=120)

圆括号是数组的语法;[key]=value ;元素间用空格间隔。

下面是关于关联数组的常见使用技巧:

示例-1. 获取关联数组所有的key,将其存放在一个普通数组中

for item in ${!HASH_MAP[*]}
doecho $item
doneFinix
Kate
Jerry

第二种方法是把星号换成艾特, 效果是一样的。

for item in ${!HASH_MAP[@]}
doecho $item
doneFinix
Kate
Jerry

示例-2. 获取关联数组所有的value,将其存放在一个普通数组中

这里把上面取所有key的表达式中的感叹号去掉即可。
星号换成艾特也一样work

for score in ${HASH_MAP[*]}
doecho $score
done200
100
120for score in ${HASH_MAP[@]}
doecho $score
done200
100
120

示例-3. 获取关联数组长度

把取key表达式中的感叹号换成井号。
这里星号也可以换成艾特。

echo ${#HASH_MAP[*]}
3echo ${#HASH_MAP[@]}
3

示例-4. 获取特定key所对应的value

echo ${HASH_MAP["Finix"]}
200

星号与艾特的区别,即如何把所有元素拼接成一个字符串

那么,使用星号和艾特的区别到底是什么呢?
用双引号将上面取所有key或取所有value的表达式括起来以后,使用星号的就变成了一个字符串,使用井号的变成一个字符串数组。
注意,在上面的示例的for循环语句中,我们并没有给表达式加上双引号,现在来加一下:

首先看一下使用星号的:

for item in "${!HASH_MAP[*]}"
doecho $item
doneFinix Kate Jerryfor item in "${HASH_MAP[*]}"
doecho $item
done200 100 120

可以看到,和之前的示例-1及示例-2中的输出不同,这里的输出变成了一行,因为加上星号表达式加上双引号之后,就变成了一个字符串。

再来看看使用艾特的:

for item in "${!HASH_MAP[@]}"
doecho $item
doneFinix
Kate
Jerryfor item in "${HASH_MAP[@]}"
doecho $item
done200
100
120

可以看到,和之前并无区别。艾特的表达式,有没有双引号,返回的都是字符串数组。

declare -p 显示整个数组

最后的一个小知识点,就是使用 declare -p <ARRAY_NAME>可以打印出这个关联数组的详情。如下:

declare -p HASH_MAP
declare -A HASH_MAP=([Finix]="200" [Kate]="100" [Jerry]="120" )

注意,以上语句中,数组名之前不能加美元符号。

shell的普通数组

shell里的普通数组,就是一维数组。

声明shell中的普通数组:

declare -a <array_name>

以下给出shell数组的常见用法示例

示例-1. 定义数组

declare -a ARRAY=(10 20 30 "Hello" 50)# or just like below 
ARRAY2=(10 20 30 "Hello" 50)

示例-2. 打印给定下标的元素值

echo ${ARRAY[2]}30

下标其实可以不连续

declare -a array=([0]=0 [1]=1 [5]=5 [10]=10)echo ${array[@]}  # 花括号不能少
0 1 5 10echo ${array[4]}  # 不存在的元素则为空

示例-3. 获取所有数组元素的值

for item in ${ARRAY[@]}
doecho $item
done10
20
30
Hello
50

与关联数组类似:第二种方法就是将星号换成艾特

for item in ${ARRAY[*]}
doecho $item
done10
20
30
Hello
50

示例-4. 获取所有数组元素的下标

看到了这么多和关联数组相同的操作,那么在数组名前用一下感叹号,会发生什么呢?
没错,当试图对普通数组取所有key值的时候,其实就是取到所有的下标了。

echo ${!ARRAY[*]}
0 1 2 3 4echo ${!ARRAY[@]}
0 1 2 3 4echo ${!array[*]}
0 1 5 10echo ${!array[@]}
0 1 5 10

示例-5. 获取数组元素个数

这个也和关联数组相同

echo ${#ARRAY[@]}
5

示例-6. 将所有元素拼接成一个字符串

与关联数组类似,给星号表达式加上双引号即可

for item in "${ARRAY[*]}"
doecho $item
done10 20 30 Hello 50one_item="${ARRAY[*]}"
echo $one_item 
10 20 30 Hello 50echo ${one_item[0]}
10 20 30 Hello 50

示例-7. 给已有数组添加元素

使用 += 可以给已有数组添加元素。

ARRAY+=(100)echo ${ARRAY[@]}
10 20 30 Hello 50 100ARRAY+=(200 300)declare -p ARRAY
declare -a ARRAY=([0]="10" [1]="20" [2]="30" [3]="Hello" [4]="50" [5]="100" [6]="200" [7]="300")

总结

关联数组与普通数组,在很多操作上都是一致的,如:

  • 取所有元素的值
    ${array[@]}

    ${array[*]}

  • 取所有元素的下标
    ${!array[@]}

    ${!array[*]}

  • 取数组的长度
    ${#array[@]}

    ${#array[*]}

  • 将所有数组元素拼接成一个字符串
    echo "${ARRAY[*]}"

  • 取特定下标或key的元素的值
    ${ARRAY[INDEX]}

(END)

http://www.yayakq.cn/news/38742/

相关文章:

  • 做网站需要工商执照吗网站建设 企炬江阴
  • 简单网站建设视频教程下载网站制作首先
  • 吴忠市建设局官方网站栾城住房和城乡建设局网站
  • 电子商务网站建设与管理课程的目的宁波男科医院哪家比较好
  • 烟台网站seo服务梵克雅宝手链
  • 口碑好的盐城网站建设wordpress 企业主页
  • 我想建立个网站怎么弄中建设计集团网站
  • 汤姆叔叔官方网站建设河南建设信息港网站查询
  • 张家港网站设计制作早晨设计myeclipse做网站的步骤
  • 怎么提高网站响应速度婚纱摄影网站的设计思路
  • 如何做微网站免费做网站哪里有
  • 网站建设与管理logo福州网站建设设计公司
  • 免费发布产品网站成都装修设计公司排名
  • 网站自动更新时间代码有免费的微网站是什么
  • 淄博周村网站建设公司设计师应该知道的网站
  • 娱乐网站模板网站开发毕业设计
  • 福田区住房和建设局网站手机代理
  • 宁波企业网站优化推广高端网站开发设计简介
  • 惠州网站建设领头羊校园官方网站如何制作
  • 福州网站开发私人泰安网站制作推广
  • 网站建设运营的灵魂是wordpress媒体库2m
  • 织梦网站地图模板样式网址百度刷排名
  • 垂直网站 开源码wordpress安装配置文件
  • 网站开发时间计划做整个网站静态页面多少钱
  • 有趣网站建设无聊微信网站协议书
  • 兰州市城乡建设局网站通知公告成都网站建设公司司
  • 正能量不良网站直接进入免费云虚服务器网站建设
  • 关键词网站建设优化泰安人才市场
  • 学科主题资源网站的建设系统门户网站建设详细功能
  • 专业做合同的网站徐汇网站开发培训班