hadoop一:shell脚本基础

一、一个shell脚本:

bash shell脚本的首行: #!/bin/bash

# 示例:./firstshell

#!/bin/bash

echo "haha"

运行脚本的两种常见方式:

1.加可执行权限,直接运行文件

# chmod 744 ./firstshell

# ./firstshell

2.使用解释器执行

# /bin/bash ./firstshell

 

二、shell中的变量:

定义变量时,注意:

  • 定义变量时,变量名不加美元符号;引用变量时,使用$变量名或者${变量名};
  • 定义变量时,=号前后不能加空格;
  • 首字母必须为字母[a-zA-Z]
  • 不能使用标点符号
  • 不能使用关键字

示例: ./varshell

#!/bin/bash

class='100ABC'
readonly class echo $class
num=`expr 3 + 3`
echo ${num}
unset num

 

将变量变改为只读变量:readonly 变量名

 

删除变量:unset 变量名

 

变量类型:

运行shell时,会同时存在三种变量:

局部变量:仅在当前shell实例中生效

环境变量:所有的程序,包括shell启动的程序,都能访问的环境变量;有些程序需要环境变量来保证其正常运行。必要的时侯,shell脚本也可以定义环境变量。

shell变量:是由shell程序设置的特殊变量。shell变量中,有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行。

 

三、shell字符串

shell字符串,可以由单引号,也可以由双引号,也可以不用任何引号。

class='abc'
class="abc"
class=abc

 

但是在单引号引用时,不识别变量!!!变量和$符号,原样输出!

反引号:引用shell中的命令

class=`date`

 

 

字符串的拼接:直接拼接,中间没有任何符号或函数

class=179a
echo "class is ${class}"class

 

179aclass

 

字符串切片:${变量名:起始位置:切片的字符数量}

class='this is class of 170a'
echo ${class:8:5}
echo `expr index "$class" is`

 

class

 

 

四、shell数组

bash只支持一维数组,不支持多维数组

定义数组: 数组名=(值1  值2 值3.........值 n)

对数组取值,必须用脚标;不使脚标时,则将输出数组所有元素连接起来的字符串

定义方式一:

arr=(1 2 3 'a' 'b' 'c')
echo $arr
echo ${arr[*]}
echo ${arr[0]}

 

 

123abc

1 2 3 a b c

1

定义方式二:

#!/bin/bash
arr2=(
1
2
3
'a'
'b'
)
echo ${arr2[*]}

echo ${arr2[0]}

 

1 2 3 a b c

1

脚标,超出范围,不抛出异常,取出的值为空。

计算数组的元素长度: ${#数组名[*]}

定义方式三:

#!/bin/bash

arr3[2]=a
arr[10]=b
echo ${arr3[*]}
echo ${#arr3[*]}

 

 a                     b

 

五、注释: #

 

 

posted on 2018-09-02 19:02  myworldworld  阅读(160)  评论(0)    收藏  举报

导航