Hadoop搭建笔记(12)

本文是我学习Hadoop搭建过程中的各种笔记,内容来自于各种公开的教程,起点非常低,从Linux基础开始,直至在PC上搭建Hadoop成功,是真正的从零开始。

感谢过程中帮助我的各位认识的和不认识的老师。

22、shell中的数组和注释

shell数组:

bash(shell的一种解释器)支持一维数组(不支持多维数组),并且没有限定数组大小。

类似与C语言,数组元素的下标由0开始编号。

获取数组中的元素要利用下标,下标可以是整数或算数表达式,其值应大于或等于0。

1、 定义数组

在shell中,用括号来表示数组,数组元素用“空格”符号分隔开,定义数组的一般形式为:

数组名=(值1 值2 值3…值n)

例如:

array_name=(value0 value1 value2 value3)

或者:

array_name=(

value0

value1

value2

value3)

还可以单独定义数组的各个分量:

array_name[0]=value0

array_name[1]=value1

array_name[n]=valuen

可以不使用连续的下标,而且下标的范围没有限制

2.读取数组

读取没有的数组也不会报数组越界异常,就是查询不出来

读取数组元素值的一般格式是:

${数组名[下标]}

例如:

valuen=${array_name[n]}

使用@或*符合可以获取数组中的所有元素,例如:

echo ${array_name[@]}

3.获取数组的长度

获取数组的长度的方法与获取字符串长度的方法相同,例如:

获取数组元素的个数:length=${#array_name[@]} 或 length=${#array_name[*]}

4.获取数组单个元素的长度

length n=${#array_name[n]}

新建一个数组脚本:vi ./array.sh       (array数组的意思)

[root@hadoop01 shell]# vi ./array.sh

#!/bin/bash

 

arr1=(1 2 3 4 'hello' 'world')

echo arr1

修改权限:

[root@hadoop01 shell]# chmod 744 ./array.sh

执行:(只打印出来了字符串,未把arr1当成变量)

[root@hadoop01 shell]# array.sh

arr1

取数组的所有值:echo ${arr1[*]}  或  echo ${arr1[@]}       *和@ 表示取所有的值

[root@hadoop01 shell]# vi ./array.sh

#!/bin/bash

 

arr1=(1 2 3 4 'hello' 'world')

echo ${arr1[*]}

[root@hadoop01 shell]# array.sh

1 2 3 4 hello world

 

[root@hadoop01 shell]# vi ./array.sh

#!/bin/bash

 

arr1=(1 2 3 4 'hello' 'world')

arr2=(

1

2

3

4

5

6

helloworld

'hello qianfeng')

echo ${arr2[*]}

 

[root@hadoop01 shell]# array.sh

1 2 3 4 5 6 helloworld hello qianfeng

 

取数组中固定的值,取第二个值:echo ${arr1[1]}

[root@hadoop01 shell]# vi ./array.sh

#!/bin/bash

 

arr1=(1 2 3 4 'hello' 'world')

arr2=(

1

2

3

4

5

6

helloworld

'hello qianfeng')

 

echo ${arr2[*]}

echo ${arr1[1]}

echo ${arr2[7]}

echo ${arr2[10]}

 

[root@hadoop01 shell]# array.sh

1 2 3 4 5 6 helloworld hello qianfeng

2

hello qianfeng

取没有的值,取出来是个空的,不报错

 

数组定义的另一种方式:

arr3[0]=1     

arr3[1]=3

arr3[3]=hello

[root@hadoop01 shell]# vi ./array.sh

#!/bin/bash

 

arr1=(1 2 3 4 'hello' 'world')

arr2=(

1

2

3

4

5

6

helloworld

'hello qianfeng')

 

arr3[0]=1

arr3[1]=3

arr3[3]=hello

 

echo ${arr2[*]}

echo ${arr1[1]}

echo ${arr2[7]}

echo ${arr2[10]}

echo ${arr3[3]}

echo ${arr3[2]}

[root@hadoop01 shell]# array.sh

1 2 3 4 5 6 helloworld hello qianfeng

2

hello qianfeng

 

hello

 

 

重赋值:

[root@hadoop01 shell]# vi ./array.sh

#!/bin/bash

 

arr1=(1 2 3 4 'hello' 'world')

arr2=(

1

2

3

4

5

6

helloworld

'hello qianfeng')

 

arr3[0]=1

arr3[1]=3

arr3[3]=hello

arr3[3]=world

 

echo ${arr2[*]}

echo ${arr1[1]}

echo ${arr2[7]}

echo ${arr2[10]}

echo ${arr3[3]}

echo ${arr3[2]}

 

[root@hadoop01 shell]# array.sh

1 2 3 4 5 6 helloworld hello qianfeng

2

hello qianfeng

 

world

取所有值:

[root@hadoop01 shell]# vi ./array.sh

#!/bin/bash

 

arr1=(1 2 3 4 'hello' 'world')

arr2=(

1

2

3

4

5

6

helloworld

'hello qianfeng')

 

arr3[0]=1

arr3[1]=3

arr3[3]=hello

arr3[3]=world

 

echo ${arr2[*]}

echo ${arr1[1]}

echo ${arr2[7]}

echo ${arr2[10]}

echo ${arr3[3]}

echo ${arr3[2]}

echo ${arr3[@]}

 

[root@hadoop01 shell]# array.sh

1 2 3 4 5 6 helloworld hello qianfeng

2

hello qianfeng

 

world

 

1 3 world

 

取数组的元素长度:echo ${#arr1}

#!/bin/bash

 

arr1=(1 2 3 4 'hello' 'world')

arr2=(

1

2

3

4

5

6

helloworld

'hello qianfeng')

 

arr3[0]=1

arr3[1]=3

arr3[3]=hello

arr3[3]=world

 

echo ${arr2[*]}

echo ${arr1[1]}

echo ${arr2[7]}

echo ${arr2[10]}

echo ${arr3[3]}

echo ${arr3[2]}

echo ${arr3[@]}

echo ${#arr1}

[root@hadoop01 shell]# array.sh

1 2 3 4 5 6 helloworld hello qianfeng

2

hello qianfeng

 

world

 

1 3 world

(不行)

#!/bin/bash

 

arr1=(1 2 3 4 'hello' 'world')

arr2=(

1

2

3

4

5

6

helloworld

'hello qianfeng')

 

arr3[0]=1

arr3[1]=3

arr3[3]=hello

arr3[3]=world

 

echo ${arr2[*]}

echo ${arr1[1]}

echo ${arr2[7]}

echo ${arr2[10]}

echo ${arr3[3]}

echo ${arr3[2]}

echo ${arr3[@]}

echo ${#arr1}

echo ${#arr1[*]}

 

[root@hadoop01 shell]# array.sh

1 2 3 4 5 6 helloworld hello qianfeng

2

hello qianfeng

 

world

 

1 3 world

1

6

shell 注释

以“#”开头行就是注释,会被shell的解释器忽略。(除第一行的解释器以外)

sh里没有多行注释,只能每一行加一个“#”号。

注意:

如果在开发过程中,遇到大段的代码需要临时注释起来,过一会又取消注释,怎么办?

每一行加个#符号太费事,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行了,达到了和注射一样的效果。←麻烦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Demoatnes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值