大数据技术之Shell

Shell概述


大数据技术之Shell

 Shell解析器


大数据技术之Shell
【Linux提供的Shell解析器】
大数据技术之Shell
【bash和sh的关系】
大数据技术之Shell
【CentOS默认的解析器】

Shell脚本入门


1、脚本格式

脚本以【#!/bin/bash】或者【#!/bin/env bash】开头

大数据技术之Shell

2、第一个脚本:Hello World

①创建一个Shell脚本文件,后缀名称为【.sh】

可以直接使用【VIM编辑器】直接创建并编辑Shell脚本文件        【推荐使用

大数据技术之Shell

也可以通过【touch】命令创建Shell脚本文件之后再编辑脚本。

大数据技术之Shell

②编辑Shell脚本文件

大数据技术之Shell

③运行Shell脚本文件

大数据技术之Shell

脚本常用的执行方式
第一种:采用bash或sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限) 推荐使用
①sh+脚本的相对路径
②sh+脚本的绝对路径
③bash+脚本的相对路径
④bash+脚本的绝对路径
第二种:采用输入脚本的绝对路径或者相对路径执行脚本(必须具有可执行权限+x,推荐采用这种方式)
①赋予权限:chmod +x Shell脚本
②相对路径执行:./脚本
③绝对路径执行:/用户/目录/脚本

3、第二个Shell脚本:多命令处理

①需求:在/home/demo/目录下创建一个test.txt,在test.txt文件中添加"I love you"。

②案例实操:

a、创建脚本

大数据技术之Shell

b、编辑脚本

大数据技术之Shell

c、执行脚本

大数据技术之Shell

d、查看脚本的执行过程【一般使用这个命令来查看脚本执行的步骤,错误】

大数据技术之Shell

e、查看脚本的语法【一般使用这个命令来查看脚本语法错误】

大数据技术之Shell

Shell中的变量


1、系统变量

①常用系统变量

$HOME、$PWD、$SHELL、$USER

②案例实操

a、查看系统变量的值

大数据技术之Shell

b、显示当前Shell中所有变量:set

大数据技术之Shell

2、自定义变量

①基本语法

定义变量:变量=值

撤销变量:unset 变量

声明静态变量:readonly 变量,注意:不能unset

 

②变量定义规则

变量名称可以由字母、数字和下划线组成,但不能以数字开头,环境变量名建议大写。

等号两侧不能有空格

在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。

变量的值如果有空格,需要使用双引号或单引号括起来

 

③案例实操

定义变量A、查看变量A的值

大数据技术之Shell

给变量A重新赋值

大数据技术之Shell

撤销变量A

大数据技术之Shell

声明静态的变量B=2,不能 【unset

大数据技术之Shell

在bash中,变量默认类型都是字符串类型,无法直接进行数值运算

大数据技术之Shell

变量的值如果有空格,需要使用双引号或者单引号括起来

大数据技术之Shell

 可把变量提升为全局环境变量,可供其他Shell程序使用

大数据技术之Shell

3、特殊变量:$n、$#、$*、[email protected]、$?

①基本语法

$n、$#、$*、[email protected]、$?比较
名称 功能描述
$n n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号,如${10}
$# 获取所有输入参数个数,常用于循环
$* 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
[email protected] 这个变量也代表命令行中所有的参数,不过[email protected]把每个参数区分对待
$?

最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行

如果这个变量的值为非0,则证明上一个命令执行不正确

②案例实操

$n:输出该脚本文件名称、输出参数1和参数2的值

大数据技术之Shell

大数据技术之Shell

 $#:获取输入参数的个数

大数据技术之Shell

大数据技术之Shell

 $*、[email protected]:打印输入的所有参数

大数据技术之Shell

大数据技术之Shell

 $?:判断parameter.sh脚本是否正确执行

大数据技术之Shell

 

Shell中的数组


Shell数组用括号来表示,元素用"空格"符号分割开,语法格式如下:

①创建一个空的Shell数组

数组名=()      例如:arr=()

②创建一个带值的Shell数组

数组名=(值1 值2 值3)         例如:arr=(value1 value2 value3)

读取数组

①读取数组元素值:echo ${数组名称[元素下标索引值]}

大数据技术之Shell

②案例实操

大数据技术之Shell
【脚本内容】
大数据技术之Shell
【执行脚本,输出结果】

 

③获取数组中的所有元素:————>使用 @ 或 * 可以获取数组中的所有元素

大数据技术之Shell
【脚本内容】
大数据技术之Shell
【执行脚本,运行结果】

④获取数组的长度:————> 【${#数组名称[*]}】或者【${#数组名称[@]}

大数据技术之Shell
【脚本内容】
大数据技术之Shell
【执行脚本,运行结果】

⑤遍历数组:————> for循环遍历

大数据技术之Shell
【脚本内容】
大数据技术之Shell
【执行脚本,运行结果】

 

 

运算符


1、基本语法

①【 $((运算式)) 】或者【 $[运算式]

常用的运算符
运算符 含义
+
-
*
/
% 取余

②expr +,-,*,/,%           加,减,乘,除,取余     【expr 运算符间要有空格】

2、案例实操

①计算3+2的值

 

②计算3-2的值

 

③计算 (2+3) x 4的值

           a、expr 一步完成计算

           

           b、采用$[运算式]方式

 

条件判断


基本语法

 

// TODO 写到这儿了