栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

大数据技术之Shell工具详解

大数据技术之Shell工具详解

前言

​ 也许漫漫长夜里带给你温暖的恰恰是那不会动情亦不会改变的代码。

​ —–2021年10月29日21:44:06

文章目录
  • 正文
    • 整体思维导图
    • Shell 概述
    • 脚本入门
    • 变量
      • 思维导图
      • 系统预定义变量
        • **常用系统变量**
        • 自定义变量
          • 语法
          • 定义规则
        • 特殊变量
          • $n
            • 功能描述
            • 注意
            • 示例
          • $#
            • 功能描述
            • 示例
          • $*
            • 功能描述
            • 示例
          • $@
            • 功能描述
            • 示例
          • $?
            • 功能描述
            • 示例
    • 运算符
      • 基本语法
      • 示例
    • 条件判断
      • 基本语法
      • 常用判断条件
      • 示例
    • 流程控制
      • if 判断
        • 基本语法
        • 示例
      • case 语句
        • 基本语法
        • 示例
      • for循环
        • 基本语法
        • 示例
    • read 读取控制台输入
        • 基本语法
        • 示例
    • 函数
      • 系统函数
        • basename
          • 基本语法
          • 作用
          • 示例
        • dirname
          • 基本语法
          • 作用
          • 示例
      • 自定义函数
        • 基本语法
          • 定义函数
          • 调用函数
          • 简化定义函数
          • 注意事项
          • 示例
    • 正则表达式入门
      • 概述
      • 常规匹配
      • 常用特殊字符
    • Shell工具
      • cut
        • 概述
        • 基本用法
        • 选项参数说明
        • 示例
      • awk
        • 概述
        • 基本用法
        • 选项参数说明
        • 示例
        • awk的内置变量
        • 示例
      • sort
        • 概述
        • 基本语法
        • 示例
        • awk的内置变量
        • 示例
      • sort
        • 概述
        • 基本语法
        • 示例
  • 结言

正文 整体思维导图

Shell 概述
  1. shell是一个命令行解释器,接受应用程序/用户命令,然后调用操作系统内核。
    
  2. shell是一门解释性语言,不需要解释器解释就能运行。
    
  3. java是一门编译性语言,需要解释器解释之后才能运行。
    

脚本入门

须知:

  1. /bin下的bash就是shell存放的位置。
  2. 一般脚本文件以sh作为后缀出现。
  3. 文件头最好加上 #!/bin/bash

运行方式

  1. bash 文件名
  2. sh 文件名
  3. 将文件设置为可执行,然后./文件名

变量 思维导图

系统预定义变量 常用系统变量

H O M E 、 HOME、 HOME、PWD、 S H E L L 、 SHELL、 SHELL、USER等

自定义变量 语法
定义:变量=值
撤销:unset 变量
声明静态变量:readonly 变量        (!!!注意不能unset)
定义规则
  • 名称可以由字母,数字和下划线组成,但是不能以数字开头,环境变量名建议大写.

  • 等号两侧不能有空格。

  • 在bash中,变量默认类型都是字符串类型。

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

  • 当需要其他shell程序使用该变量时可以把变量提升为全局环境变——export 变量名

特殊变量 $n 功能描述
n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}
注意
n用具体的数字表示。
作用是获取第1到n个参数。
在运行脚本的命令后面添加参数,用空格隔开。
示例

1.vim testn.sh —> 输入以下内容

2.bash testn.sh 1 2 3

3.结果为:

$# 功能描述
获取参数个数。
一般用于循环。
示例

在testn.sh中加入

再次运行上一条语句:bash testn.sh 1 2 3

结果为:

$* 功能描述
代表命令行中所有的参数,它把所有的参数看成一个整体。
示例

在testn.sh中加入

再次运行上一条语句:bash testn.sh 1 2 3

结果为:

$@ 功能描述
也代表命令行中所有的参数,不过$@把每个参数区别对待。
示例

在文件中加入了

再次运行上一条语句:bash testn.sh 1 2 3

结果为:

以上两个特殊变量在使用循环时使用双引号括起来才会体现不同的效果。
$? 功能描述
获取上一条语句的运行状态(0则运行成功,非0则运行失败)
示例

运算符 基本语法

$((运算式)) 或 $[运算式]

示例

条件判断 基本语法
  • test condition

  • [ condition ] (注意condition前后要有空格)

    注意:条件非空即为true,[]返回false。支持多条件判断,通过与或非。

常用判断条件

(1)两个整数之间比较

-lt 小于(less than) -le 小于等于(less equal)

-eq 等于(equal) -gt 大于(greater than)

-ge 大于等于(greater equal) -ne 不等于(Not equal)

(2)按照文件权限进行判断

-r 有读的权限(read) -w 有写的权限(write)

-x 有执行的权限(execute)

(3)按照文件类型进行判断

-f 文件存在并且是一个常规的文件(file)

-e 文件存在(existence) -d 文件存在并是一个目录(directory)

示例

流程控制 if 判断 基本语法
if [ 条件判断式 ]
    then
      程序
elif [ 条件判断式 ]
    then
      程序
else 
    程序
fi

注意事项:

(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格

(2)if后要有空格

示例

输入一个数字,如果是1,则输出yxpzuishuai,如果是2,则输出lxzzhenmei,如果是其它,什么也不输出。

vim testif.sh –>

bash testif.sh 2

结果为:

bash testif.sh 1

结果为:

case 语句 基本语法
case $变量名 in
    值1)
    	程序1
    	;;
	值2)
     	程序2
        ;;
......省略其他分支.....
    *)
    	默认程序
    ;;
esac

注意事项:

(1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。

(2)双分号“****;;****”表示命令序列结束,相当于java中的break。

(3)最后的“*)”表示默认模式,相当于java中的default。

示例

for循环 基本语法
1.
for ((初始值;循环控制条件;变量变化))
    do
        程序
        done
2.
for 变量 in 值1 值2 值3 ..
    do
        程序
        done
示例

一、

二、

read 读取控制台输入 基本语法
read(选项)(参数)
    选项:
    	-p:指定读取值时的提示符;
    	-t:指定读取值时等待的时间(秒)、
    参数:
        变量:指定读取值的变量名
示例

函数 系统函数 basename 基本语法
basename 路径名
作用
显示文件名
示例

dirname 基本语法
dirname 路径名
作用
显示目录路径
示例

自定义函数 基本语法 定义函数
[function] funname[()]{
    Action;
    [return int;]
}
调用函数
funname
简化定义函数
function funname{
    Action;
    return int;
}
注意事项
1.必须在调用函数的地方之前,先声明函数,shell脚本是逐行运行,不会像其他语言一样先编译,
   。
2.函数返回值只能通过$?系统变量获得,可以显示加:return 返回,如果不加将以最后一条命令运行结果,作为返回值,return后跟数值n(0-255)
示例

计算两个输入参数的和

正则表达式入门 概述
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
在Linux中,grep,sed,awk等命令都支持通过正则表达式进行模式匹配。
常规匹配
一串不包含特殊字符的正则.表达式匹配它自己。例如:cat /etc/passwd | grep yxp
就会匹配所有包含yxp的行
常用特殊字符
字符描述示例
^匹配一行的开头
$匹配一行的结尾
.匹配一个任意的字符
*不单独使用,他和左边第一个字符连用,表示匹配上一个字符0次或多次
[]表示匹配某个范围内的一个字符
表示转义,将转义字符和特殊字符连用,来表示特殊字符本身cat /etc/passwd就会匹配所有包含 a$b 的行。
Shell工具 cut 概述
cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。
cut命令从文件的每一行剪切字节、字符和字段,并将这些字节、字符和字段输出。
基本用法
cut[选项参数] filename
选项参数说明
选项参数功能
-f列号,提取第几列
-d分隔符,按照指定分隔符分割列(默认分隔符是制表符)
-c指定具体的字符
示例

awk 概述
一个强大的文本分析工具,把文件逐行的读入,
以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
基本用法
awk[选项参数] 'pattern1{action1} pattern2{action2}...' filename

pattern: 表示awk在数据中查找的内容,就是匹配模式
action: 在找到匹配内容时所执行的一系列命令
选项参数说明
选项参数功能
-F指定输入文件的分隔符
-v赋值一个用户定义变量
示例

awk的内置变量
变量说明
FILENAME文件名
NR已读的记录数(行数)
NF浏览记录的域的个数(切割后,列的个数)
示例

统计passwd文件名,每行的行号,每行的列数。

sort 概述
sort命令是在Linux'里非常游泳,它将文件进行排序,并将排序结果标准输出。
基本语法
sort(选项)(参数)
选项说明
-n依照数值的大小排序
-r以相反的顺序来排序
-t设置排序时所用的分隔字符
-k指定需要排序的列

参数:指定待排序的文件列表

示例

awk的内置变量
变量说明
FILENAME文件名
NR已读的记录数(行数)
NF浏览记录的域的个数(切割后,列的个数)
示例

统计passwd文件名,每行的行号,每行的列数。

sort 概述
sort命令是在Linux'里非常游泳,它将文件进行排序,并将排序结果标准输出。
基本语法
sort(选项)(参数)
选项说明
-n依照数值的大小排序
-r以相反的顺序来排序
-t设置排序时所用的分隔字符
-k指定需要排序的列

参数:指定待排序的文件列表

示例

结言

无聊的时候居然自觉地开始学习了,奇怪,我咋啦?

​ –2021年10月30日14:55:30

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/389401.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号