尚硅谷课程【笔记】——大数据之Shell【一】

课程视频:【【尚硅谷】Shell脚本从入门到实战】

一、Shell概述

为什么要学习Shell?

1)需要看懂运维人员的Shell程序

2)偶尔编写一些简单的Shell程序来管理集群、提高开发效率

什么是Shell?

1)Shell是一个命令行解释器,它接受应用程序/用户命令,然后调用操作系统内核。

2)Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。

二、Shell解析器

Linux提供的Shell解析器有:/bin/sh、/bin/bash等。

sh实际是软连接直接指向bash

三、Shell脚本入门

1、脚本格式

#!/bin/bash开头(指定解析器)

2、创建一个helloworld脚本

创建脚本文件:touch helloworld.sh

#!/bin/bashecho "helloworld"

运行脚本:sh helloworld.sh或bash helloworld.sh或./helloworld.sh(用户执行,需要有权限)

3、创建一个多命令处理脚本

要求在/home/目录下创建一个banzhang.txt,在该txt文件中增加“I love cls”.

创建脚本文件:touch batch.sh

#!/bin/bashcd /home/
touch banzhang.txt
echo "I love cls" >> banzhang.txt

运行脚本:bash batch.sh

四、Shell中的变量

系统变量

$HOME、#PWD、$SHELL、$USER等

查看变量值:echo+变量名。如:echo $HOME。

自定义变量

1)定义变量:变量=值。如:NUM=1。

2)撤销变量:unset 变量。如:unset NUM。

3)声明静态变量:readonly 变量(不能被撤销unset)。如:readonly NUMBER=2。

自定义变量定义规则

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

2)等号两侧不能有空格。

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

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

5)把变量提升为全局环境变量,可供其他Shell程序使用:export 变量名。如:export NUMBER。

特殊变量$n、$#、$*、$@、$?

$n:其中n为数字,$0表示该脚本的名字,$1-$9表示传入脚本的1-9个参数。

#!/bin/bash
#创建一个名为parameter.sh的脚本
echo "$0 $1 $2"

运行bash parameter.sh ABC 123,会输出parameter.sh ABC 123。

$#:获取所有输入参数个数。

#!/bin/bash
#创建一个名为parameter.sh的脚本
echo "$0 $1 $2"
echo $#

运行bash parameter.sh ABC 123 abc,会输出

parameter.sh ABC 123

3。

$*:代表命令行中的所有参数,$*把所有的参数看成一个整体。

$@:代表命令行中的所有参数,$@把每个参数区分对待。

#!/bin/bash
#创建一个名为parameter.sh的脚本
echo "$0 $1 $2"
echo $#
echo $*
echo $@

运行bash parameter.sh ABC 123 abc,会输出

parameter.sh ABC 123

3

ABC 123 abc

ABC 123 abc。

$?:最后一次执行命令的返回状态。0表示正确执行,非零表示没有正确执行。

五、运算符

基本语法

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

2)expr + - \* /% (expr运算符之间必须有空格

实操

计算2+3:expr 2 + 3

计算(2+3)*4,expr `expr 2 + 3` \* 4 或 $[(2+3)*4]

六、条件判断

基本语法

[ condition ](condition前后要有空格,条件非空即为true)

常用判断条件

常用判断条件
=字符串比较
-lt小于-le小于等于
-eq等于-gt大于
-ge大于等于-ne不等于
按照文件权限进行判断:
-r有读的权限
-w有写的权限
-x有执行的权限
按照文件权限进行判断:
-f文件存在且是一个常规文件
-e文件存在
-d文件存在且是一个目录

如:

判断23是否小于22:[ 23 -le 22 ]

判断helloworld.sh是否具有写权限:[ -w helloworld.sh]

多条件判断

&&表示前一条命令执行成功后,才执行后一条命令;

||   表示上一条命令执行失败后,才执行下一条命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/68049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2025】camunda API接口介绍以及REST接口使用(3)

前言 在前面的两篇文章我们介绍了Camunda的web端和camunda-modeler的使用。这篇文章主要介绍camunda结合springboot进行使用,以及相关api介绍。 该专栏主要为介绍camunda的学习和使用 🍅【2024】Camunda常用功能基本详细介绍和使用-下(1&…

Java进阶学习之路

Java进阶之路 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 Java进阶之路前言一、Java入门 Java基础 1、Java概述 1.1 什…

JAVA安全—反射机制攻击链类对象成员变量方法构造方法

前言 还是JAVA安全,哎,真的讲不完,太多啦。 今天主要是讲一下JAVA中的反射机制,因为反序列化的利用基本都是要用到这个反射机制,还有一些攻击链条的构造,也会用到,所以就讲一下。 什么是反射…

DeepSeek-R1 论文解读:强化学习如何 “炼” 出超强推理模型?

深度解析DeepSeek-R1:强化学习驱动大语言模型推理能力新突破 论文链接:DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 在大语言模型(LLMs)飞速发展的当下,提升模型推理能力成…

【数据结构】循环链表

循环链表 单链表局限性单向循环链表判断链表是否有环思路code 找到链表入口思路代码结构与逻辑 code 单链表局限性 单链表作为一种基本的数据结构,虽然在很多场景下都非常有用,但它也存在一些局限性: 单向访问:由于每个节点仅包含…

ip属地是手机号还是手机位置?一文理清

在数字化和网络化的今天,IP属地这一概念逐渐成为了人们关注的焦点。特别是在社交媒体和在线平台上,IP属地的显示往往让人联想到用户的地理位置。然而,关于IP属地到底与手机号还是手机位置有关,却存在着不少误解和混淆。本文将深入…

离散时间傅里叶变换(DTFT)公式详解:周期性与连续性剖析

摘要 离散时间傅里叶变换(DTFT)是数字信号处理领域的重要工具,它能将离散时间信号从时域转换到频域,揭示信号的频率特性。本文将深入解读DTFT公式,详细阐述其具有周期性和连续性的原因,帮助读者全面理解DT…

哈希表与散列表的原理及C++实现

1. 什么是哈希表? 哈希表(Hash Table)是一种高效的数据结构,用于存储键值对(Key-Value Pairs)。它通过哈希函数(Hash Function)将键(Key)映射到一个固定大小…

图像分类与目标检测算法

在计算机视觉领域,图像分类与目标检测是两项至关重要的技术。它们通过对图像进行深入解析和理解,为各种应用场景提供了强大的支持。本文将详细介绍这两项技术的算法原理、技术进展以及当前的落地应用。 一、图像分类算法 图像分类是指将输入的图像划分为…

数字化转型:概念性名词浅谈(第四讲)

​大家好,本篇文章是在新年之际写的,所以在这里先给大家拜个年。 今天要介绍的名词为ETL: ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transfor…

UVM factory机制

目录 1. factory-register 1.1 uvm_object_registry#(type T=uvm_object, string Tname="") 1.1 uvm_default_factory::register 2. factory-override 2.1 set_type_override(uvm_object_wrapper override_type) 2.2 set_inst_override(uvm_object_wrapper ove…

奥迪改名风波再起,A6L能否率队创下新奇迹

文/王俣祺 导语:春节假期刚过,奥迪的车型命名规则又变了。在如今以内卷为主基调的环境下,车型改名可不是小事,而奥迪的这次调整背后藏着许多深意,也预示着2025年奥迪在产品布局上的新动向。 改名能否“改命” 回溯到…

改进Transformer,解读Tokenformer论文:基于参数分词化重新思考Transformer的扩展策略

Transformer 训练成本高昂的问题日益凸显,不仅需要耗费巨额的资金与大量的计算资源,还对环境产生了不可忽视的影响,最近由北京大学与谷歌联合发表的一篇论文,为这一棘手难题带来了全新的曙光。论文中提出的创新方案,有…

【STM32】HAL库USB虚拟U盘MSC配置及采用自带的Flash作为文件系统

【STM32】HAL库USB虚拟U盘MSC实现配置及采用自带的Flash作为文件系统 本文将自带的Flash作为文件系统 通过配置USB的MSC功能实现虚拟U盘 没有单独建立FATFS文件系统 仅仅是配置USB和Flash读写而已 当然 这里也可以用外部Flash等等 也可以配置文件系统来进行套壳 但总体而言不如…

Nginx通过设置自定义标记识别代理调用

Nginx通过设置自定义标记识别代理调用 业务场景 最近遇到一个业务场景,部署在云端服务器的一个平台,接口提供给多个现场调用,其中一个现场是通过nginx代理服务器代理转发到云服务器,另外一个现场则是直接通过云服务器接口进行调…

【DeepSeek系列】01 DeepSeek-V1 快速入门

1、DeepSeek简介 2024年底,DeepSeek 相继推出了其第一代推理大模型:DeepSeek-R1-Zero 和 DeepSeek-R1。 DeepSeek-R1-Zero 是一个通过大规模强化学习(RL)训练的模型,训练过程中没有使用监督微调(SFT&…

基于LabVIEW的Modbus-RTU设备通信失败问题分析与解决

在使用 LabVIEW 通过 Modbus-RTU 协议与工业设备进行通信时,可能遇到无法正常发送或接收指令的问题。常见原因包括协议参数配置错误、硬件连接问题、数据帧格式不正确等。本文以某 RGBW 控制器调光失败为例,提出了一种通用的排查思路,帮助开发…

密云生活的初体验

【】在《岁末随笔之碎碎念》里,我通告了自己搬新家的事情。乙巳年开始,我慢慢与大家分享自己买房装修以及在新家的居住体验等情况。 跳过买房装修的内容,今天先说说这三个月的生活体验。 【白河】 潮白河是海河水系五大河之一,贯穿…

Python爬虫:1药城店铺爬虫(完整代码)

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…

openwebui入门

1 简介 ‌Open WebUI‌(网址是openwebui.com)是一个高度可扩展、功能强大且用户友好的自托管Web用户界面,专为完全离线操作设计,编程语言是python。它支持对接Ollama和OpenAI兼容的API的大模型。‌ Open WebUI‌在架构上是一种中…