一起重新开始学大数据-Linux篇-Day31-shell脚本(1)

2024-04-03 00:38

本文主要是介绍一起重新开始学大数据-Linux篇-Day31-shell脚本(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一起重新开始学大数据-Linux篇-Day31-shell脚本(1)

在这里插入图片描述

Shell 介绍

前言:

计算机只能认识(识别)机器语言(0和1),如(11000000 这种)。但是,我们的程序猿们不能直接去写01这样的代码,所以,要想将程序猿所开发的代码在计算机上运行,就必须找"人"(工具)来翻译成机器语言,这个"人"(工具)就是我们常常所说的编译器或者解释器

编译和解释型语言区别

1. 编程语言分类

  • 编译型语言:

​ 程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++

  • 解释型语言:

​ 程序不需要编译,程序在运行时由解释器翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Python/JavaScript/ Perl /ruby/Shell等都是解释型语言。

  • 总结

编译型语言比解释型语言速度较快,但是不如解释型语言跨平台性好。如果做底层开发或者大型应用程序或者操作系开发一般都用编译型语言;如果是一些服务器脚本及一些辅助的接口,对速度要求不高、对各个平台的兼容性有要求的话则一般都用解释型语言。

2. shell 简介

  • 一句话概括

简单来说就是将需要执行的命令保存到文本中,按照顺序执行。它是解释型的,意味着不需要编译。

  • 准确叙述

若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想= shell脚本

shell操作linux的桥梁

创建:

后缀为.sh的文件

编写:

头部注释为#!/bin/sh或者#!/bin/bash(注释可写可不写,建议写上)

运行:

**1.通过sh命令执行**

例如:sh helloworld.sh
2.通过bash命令执行
例如:bash helloworld.sh
3.通过把文件修改为可执行的文件然后通过./文件命令.sh来执行
例如:./helloworld.sh(必须在当前目录下)

定义和初始化

格式

变量名称=值

例如:

x=10 "abc edefg"

注意:

等号两边不能有空格
使用:通过$区分变量还是一句话

格式1:

$变量

格式2:

${变量}

注意:

格式1,会把$后所有相连内容看做一个变量
格式2,${}表示值引用{}之中的内容分,对相连的内容做了一个区分

$0…$n:表示接收外部参数(执行脚本时,传递的参数)

格式:

$下标

注意:

\$0永远表示脚本名称(所以脚本名称不算数,\$0也不算第一个参数)
下标大于一位数只能使用\${}获取参数,因为\$下标只把第一位数据看做下标
$*获取所有参数
$#获取所有参数个数

引号:

单引号:安原字符串输出
双引号:可以引用变量,拥有特殊含义的内容

拼接:连续获取变量

注意:

如果有多个引号,连续的形成一对
引号中使用其他引号,其他引号做字符串使用

字符串

获取长度

格式:

${#变量}

截取:

格式:

${变量:开始位置:长度}

注意:

${str::5}:从0获取5个
${str:0}:从0获取到末尾

替换单个

格式:

${变量/旧/新}

注意:

从左向右替换第一个

替换所有

格式:

${变量//旧/新}

注意:

替换不会再原字符上进行修改,想要修改原字符串只能从新赋值

删除

从头开始删除

${变量#表达式}:匹配第一个删除
${变量##表达式}:匹配最后一个删除

从尾开始删除

${变量%表达式}:匹配第一个删除
${变量%%表达式}:匹配最后一个删除

注意:

从未开始删除,表达式还是从左向右去写
删除不会再原字符上进行修改,想要修改原字符串只能从新赋值

运算符

算术运算符

bash不支持简单的数学运算,可以通过命令实现expr

格式1:

expr 值 + 值
注意:符号两边需要加上空格

格式2:

$[值+值]

比较运算符: > < >= <=…

格式:

$[值符号值](符号两边空格加不加无所谓)

注意:

比较的结果用1(true)和0(false)表示

逻辑运算符: &/and |/or !/not

例如:

#判断2>1结果
`echo $[2 > 1]
#反转2>1结果
echo $[!$[2>1]]
#  反转后面的结果2>1 and 2>3  false0
echo $[!$[$[2>1]&$[2>3]]]
echo $[2>1 & 2<1]

if

格式1:

if 	判断条件
then判断为true执行的代码
fi

格式2:

if 判断条件
then判断为true执行的代码
else判断为false执行的代码
fi

格式3:

if 判断条件
then判断为true执行的代码
elif 判断条件
then判断为true执行的代码else判断为false执行的代码
fi

注意:

else可加可不加
判断条件的写法
[]:[]两边加空格,符号两边加空格并且符号前加转义符
可以使用字母
[[]]:[[]]两边加空格,符号两边加空格
可以使用字母
():弃用
(()):不需要加空格,但是不能使用字母
在使用变量时,不需要使用$

for

java格式:

for ((初始化变量;判断条件;控制语句))
do执行语句
done

python格式:

for 变量 in 结果集
do执行语句
done
结果集:

{开始..结束} 含头含尾,不能引用变量
seq 开始 结束 含头含尾

例如:获取1-100的奇数和偶数和

jsum=0
osum=0
for i in {1..100}
doif ((${i}%2==0))then#osum+=${i} 结果做了拼接 不是算术运算#osum=`expr ${i} + ${osum}`#osum=$[${i}+${osum}]let osum+=ielselet jsum+=ifi
done
echo 偶数和为:${osum}
echo 奇数和为:${jsum}

例如:敲七

#!/bin/env bash
#敲7
for i in {1..100}
doif((i%7==0))thenecho ${i}elif((i%10==7))thenecho ${i}elif((i/70==1))thenecho ${i}fi
done

案例:倒三角

[root@tt shell]# cat daosan.sh 
#!/bin/env bash
l=8
for i in {1..9}
dostr="*"for k in `seq 1 $l `dostr=${str}" ""*"doneecho "${str}"let l-=1
done
[root@tt shell]# bash daosan.sh 
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*

注意:

使用let在计算时可以直接使用变量

|
|
|
|
|
|
|
|
|

上一章-Linux篇-Day30-克隆虚拟机(续)-修改ip,添加映射关系,配置ssh免密,启动模式

下一章-Linux篇-Day32-shell脚本(2)、时间、定时器、安装MySQL

听说长按大拇指👍会发生神奇的事情呢!好像是下面的画面,听说点过的人🧑一个月内就找到了对象的💑💑💑,并且还中了大奖💴$$$,考试直接拿满分💯,颜值突然就提升了😎,虽然对你好像也不需要,是吧,吴彦祖🤵!

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

这篇关于一起重新开始学大数据-Linux篇-Day31-shell脚本(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871490

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor