尚硅谷课程【笔记】——大数据之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.rhkb.cn/news/12303.html

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

相关文章

pytorch实现长短期记忆网络 (LSTM)

人工智能例子汇总:AI常见的算法和例子-CSDN博客 LSTM 通过 记忆单元(cell) 和 三个门控机制(遗忘门、输入门、输出门)来控制信息流: 记忆单元(Cell State) 负责存储长期信息&…

CDDIS从2025年2月开始数据迁移

CDDIS 将从 2025 年 2 月开始将我们的网站从 cddis.nasa.gov 迁移到 earthdata.nasa.gov,并于 2025 年 6 月结束。 期间可能对GAMIT联网数据下载造成影响。

【Redis】主从模式,哨兵,集群

主从复制 单点问题: 在分布式系统中,如果某个服务器程序,只有一个节点(也就是一个物理服务器)来部署这个服务器程序的话,那么可能会出现以下问题: 1.可用性问题:如果这个机器挂了…

华为云kubernetes部署deepseek r1、ollama和open-webui(已踩过坑)

1 概述 ollama是一个管理大模型的一个中间层,通过它你可以下载并管理deepseek R1、llama3等大模型。 open-webui是一个web界面(界面设计受到chatgpt启发),可以集成ollama API、 OpenAI的 API。 用常见的web应用架构来类比&#x…

在Mac mini M4上部署DeepSeek R1本地大模型

在Mac mini M4上部署DeepSeek R1本地大模型 安装ollama 本地部署,我们可以通过Ollama来进行安装 Ollama 官方版:【点击前往】 Web UI 控制端【点击安装】 如何在MacOS上更换Ollama的模型位置 默认安装时,OLLAMA_MODELS 位置在"~/.o…

CSS 背景与边框:从基础到高级应用

CSS 背景与边框:从基础到高级应用 1. CSS 背景样式1.1 背景颜色示例代码:设置背景颜色 1.2 背景图像示例代码:设置背景图像 1.3 控制背景平铺行为示例代码:控制背景平铺 1.4 调整背景图像大小示例代码:调整背景图像大小…

数据思维错题知识点整理(复习)

小的知识点整理 目前常见的数据采集方案有什么。 埋点、可视化埋点、无埋点(无埋点并不是字面意思不埋点,其实也是一种埋点,只是让开发人员完全无感知,直接嵌入sdk,然后每个元素都能查看他们的情况,后续开…

PyQt4学习笔记2】QMainWindow

目录 一、创建 QMainWindow 组件 1. 创建工具栏 2. 创建停靠窗口 3. 设置状态栏 4. 设置中央窗口部件 二、QMainWindow 的主要方法 1. addToolBar() 2. addDockWidget() 3. setStatusBar() 4. setCentralWidget() 5. menuBar() 6. saveState() 和 restoreState() 三、QMainWind…

Linux:文件系统(软硬链接)

目录 inode ext2文件系统 Block Group 超级块(Super Block) GDT(Group Descriptor Table) 块位图(Block Bitmap) inode位图(Inode Bitmap) i节点表(inode Tabl…

ubuntu22.40安装及配置静态ip解决重启后配置失效

遇到这种错误,断网安装即可! 在Ubuntu中配置静态IP地址的步骤如下。根据你使用的Ubuntu版本(如 Netplan 或传统的 ifupdown),配置方法有所不同。以下是基于 Netplan 的配置方法(适用于Ubuntu 17.10及更高版…

手写MVVM框架-实现简单的数据代理

MVVM框架最显著的特点就是虚拟dom和响应式的数据、我们以Vue为例,分别实现data、computed、created、methods以及虚拟dom。 这一章我们先实现简单的响应式,修改数据之后在控制台打印。 我们将该框架命名为MiniVue。 首先我们需要创建MiniVue的类(src/co…

ESLint

ESLint ESLint 是一个针对 JS 的代码风格检查工具,当不满足其要求的风格时,会给予警告或错误。 官网:https://eslint.org/ 中文网:https://eslint.nodejs.cn/ 安装使用 在你的项目中安装 ESLint 包: npm install -…

kaggle视频行为分析1st and Future - Player Contact Detection

这次比赛的目标是检测美式橄榄球NFL比赛中球员经历的外部接触。您将使用视频和球员追踪数据来识别发生接触的时刻,以帮助提高球员的安全。两种接触,一种是人与人的,另一种是人与地面,不包括脚底和地面的,跟我之前做的这…

Chapter 6 -Fine-tuning for classification

Chapter 6 -Fine-tuning for classification 本章内容涵盖 引入不同的LLM微调方法准备用于文本分类的数据集修改预训练的 LLM 进行微调微调 LLM 以识别垃圾邮件评估微调LLM分类器的准确性使用微调的 LLM 对新数据进行分类 现在,我们将通过在大语言模型上对特定目标任…

【从零开始的LeetCode-算法】922. 按奇偶排序数组 II

给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。 对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。 你可以返回 任何满足上述条件的…

python 小游戏:扫雷

目录 1. 前言 2. 准备工作 3. 生成雷区 4. 鼠标点击扫雷 5. 胜利 or 失败 6. 游戏效果展示 7. 完整代码 1. 前言 本文使用 Pygame 实现的简化版扫雷游戏。 如上图所示,游戏包括基本的扫雷功能:生成雷区、左键点击扫雷、右键标记地雷、显示数字提示…

安全策略实验报告

1.实验拓扑图 2.实验需求 vlan2属于办公区,vlan3生产区 办公区pc在工作日时间可以正常访问OAserver,i其他时间不允许 办公区pc可以在任意时间访问Web server 生产区pc可以在任意时间访问OA server但不能访问web server 特例:生产区pc可以…

力扣73矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 输入:matrix [[0,1,2,0],[3,4,5,2],[…

蓝桥杯C语言组:暴力破解

基于C语言的暴力破解方法详解 暴力破解是一种通过穷举所有可能的解来找到正确答案的算法思想。在C语言中,暴力破解通常用于解决那些问题规模较小、解的范围有限的问题。虽然暴力破解的效率通常较低,但它是一种简单直接的方法,适用于一些简单…

【自然语言处理(NLP)】生成词向量:GloVe(Global Vectors for Word Representation)原理及应用

文章目录 介绍GloVe 介绍核心思想共现矩阵1. 共现矩阵的定义2. 共现概率矩阵的定义3. 共现概率矩阵的意义4. 共现概率矩阵的构建步骤5. 共现概率矩阵的应用6. 示例7. 优缺点优点缺点 **总结** 目标函数训练过程使用预训练的GloVe词向量 优点应用总结 个人主页:道友老…