大数据技术之Shell
Shell概述
Shell解析器
【Linux提供的Shell解析器】 【bash和sh的关系】 【CentOS默认的解析器】
Shell脚本入门
1、脚本格式
脚本以【#!/bin/bash】或者【#!/bin/env bash】开头
2、第一个脚本:Hello World
①创建一个Shell脚本文件,后缀名称为【.sh】
可以直接使用【VIM编辑器】直接创建并编辑Shell脚本文件 【推荐使用】
也可以通过【touch】命令创建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、创建脚本
b、编辑脚本
c、执行脚本
d、查看脚本的执行过程【一般使用这个命令来查看脚本执行的步骤,错误】
e、查看脚本的语法【一般使用这个命令来查看脚本语法错误】
Shell中的变量
1、系统变量
①常用系统变量
$HOME、$PWD、$SHELL、$USER等
②案例实操
a、查看系统变量的值
b、显示当前Shell中所有变量:set
2、自定义变量
①基本语法
定义变量:变量=值
撤销变量:unset 变量
声明静态变量:readonly 变量,注意:不能unset
②变量定义规则
变量名称可以由字母、数字和下划线组成,但不能以数字开头,环境变量名建议大写。
等号两侧不能有空格
在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
变量的值如果有空格,需要使用双引号或单引号括起来
③案例实操
定义变量A、查看变量A的值
给变量A重新赋值
撤销变量A
声明静态的变量B=2,不能 【unset】
在bash中,变量默认类型都是字符串类型,无法直接进行数值运算
变量的值如果有空格,需要使用双引号或者单引号括起来
可把变量提升为全局环境变量,可供其他Shell程序使用
3、特殊变量:$n、$#、$*、[email protected]、$?
①基本语法
名称 | 功能描述 |
---|---|
$n | n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号,如${10} |
$# | 获取所有输入参数个数,常用于循环 |
$* | 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体 |
[email protected] | 这个变量也代表命令行中所有的参数,不过[email protected]把每个参数区分对待 |
$? |
最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行; 如果这个变量的值为非0,则证明上一个命令执行不正确了 |
②案例实操
$n:输出该脚本文件名称、输出参数1和参数2的值
$#:获取输入参数的个数
$*、[email protected]:打印输入的所有参数
$?:判断parameter.sh脚本是否正确执行
Shell中的数组
Shell数组用括号来表示,元素用"空格"符号分割开,语法格式如下:
①创建一个空的Shell数组
数组名=() 例如:arr=()
②创建一个带值的Shell数组
数组名=(值1 值2 值3) 例如:arr=(value1 value2 value3)
读取数组
①读取数组元素值:echo ${数组名称[元素下标索引值]}
②案例实操
【脚本内容】 【执行脚本,输出结果】
③获取数组中的所有元素:————>使用 @ 或 * 可以获取数组中的所有元素
【脚本内容】 【执行脚本,运行结果】
④获取数组的长度:————> 【${#数组名称[*]}】或者【${#数组名称[@]}】
【脚本内容】 【执行脚本,运行结果】
⑤遍历数组:————> for循环遍历
【脚本内容】 【执行脚本,运行结果】
运算符
1、基本语法
①【 $((运算式)) 】或者【 $[运算式] 】
运算符 | 含义 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
②expr +,-,*,/,% 加,减,乘,除,取余 【expr 运算符间要有空格】
2、案例实操
①计算3+2的值
②计算3-2的值
③计算 (2+3) x 4的值
a、expr 一步完成计算
b、采用$[运算式]方式
条件判断
基本语法
// TODO 写到这儿了