当前位置: 首页 > article >正文

尚硅谷课程【笔记】——大数据之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/bash

echo "helloworld"

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

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

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

创建脚本文件:touch batch.sh

#!/bin/bash

cd /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.kler.cn/a/532773.html

相关文章:

  • 排序算法--插入排序
  • php反序列化
  • 84-《金银花》
  • pytorch图神经网络处理图结构数据
  • 实战:如何利用网站外部链接提升收录?
  • Java 大视界 -- Java 大数据在智能医疗影像诊断中的应用(72)
  • LeetCode:516.最长回文子序列
  • 【数据结构】_栈的结构与实现
  • 人工智能专业术语详解(A)
  • Windows:AList+RaiDrive挂载阿里云盘至本地磁盘
  • Javaweb学习之Mysql(Day5)
  • excel电子表(或csv)中如何合并两个工作表,超过1,048,576行
  • 大模型高级工程师实践 - 将课程内容转为音频
  • 手写MVVM框架-收集依赖
  • 优选算法合集————双指针(专题二)
  • ZZNUOJ(C/C++)基础练习1051——1060(详解版)
  • linux 命令笔记
  • Linux(Centos)安装allnnlp失败,jsonnet报错
  • git进阶--4---git rebase 和 git merge的区别与联系
  • kubernetes 核心技术-Helm
  • MySQL 事务实现原理( 详解 )
  • 【web js逆向分析易盾滑块fp参数】逆向分析网易易盾滑块的 fp 参数,仅供学习交流
  • 渗透笔记2
  • 人工智能赋能企业系统架构设计:以ERP与CRM系统为例
  • 【零基础到精通】小白如何自学网络安全
  • 5 前端系统开发:Vue2、Vue3框架(上):Vue入门式开发和Ajax技术