shell脚本

1、什么是shell

什么是shell

Shell(外壳) 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。 Shell 既是一种命令语言又是一种程序设计语言

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

什么是脚本?

脚本只是一段可以看到的文本命令(例如,您可以用记事本打开并编辑它)。

[En]

A script is simply a piece of text commands that can be seen (for example, you can open it with notepad and edit it).

常见的脚本: JavaScript (JS ,前端),VBScript, ASP ,JSP ,PHP (后端),SQL(数据库操作语言),Perl, Shell,python,Ruby,JavaFX,Lua等。

为什么要学习和使用shell

Shell属于内置的脚本

程序开发非常高效,依靠强大的命令快速完成开发任务(批处理)

[En]

Program development is very efficient, relying on powerful commands to quickly complete development tasks (batch processing)

语法简单,代码编写简单,易学易学。

[En]

The syntax is simple, and the code is easy to write and easy to learn.

常见的shell 种类?

在linux中有很多类型的shell,不同的shell具备不同的功能,shell还决定了脚本中函数的语法,Linux中默认的shell是 /bin/bash (重点),流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特点以及用途。

2、shell入门

编写规范

使用流程:

①创建.sh文件 touch/vim

②编写shell代码

③执行shell脚本 脚本必须得有执行权限

二、shell进阶(重点)

1、变量(重点)

1.1 、变量的含义

a. 什么是量:量就是数据.

b. 什么是变量:数据可以发生改变就是变量.

在一个脚本周期内, 其值可以发生改变的量就是变量.

c. 什么叫做一个脚本周期

一个脚本周期我们可以简单的理解为当前的shell文件。

变量是shell中不可或缺的一部分,也是 最基础、最重要的组成部分。

1.2 、变量的定义与使用(重点)

定义形如:class_name=”yunwe “

使用形如:echo $class_name

注意:变量名后面的等号左右不能有空格

变量名的命名须遵循如下规则

命名只能使用字母、数字和下划线,第一个字符不能以数字开头。

[En]

Naming can only use letters, numbers and underscores, and the first character cannot start with a number.

中间没有空格,没有标点符号。

[En]

No spaces in the middle, no punctuation.

不能使用bash里的关键字(可用help命令查看保留关键字)。

关于单双引号的问题:

双引号能够识别变量,双引号能够实现转义(类似于”* “)

单引号是不能识别变量,只会原样输出,单引号是不能转义的

注意: 当在脚本中需要执行一些指令并且将执行的结果赋给变量的时候需要使用”反引号” (esc 键下方的那个键) 。

1.3、只读变量(了解)

语法:readonly 变量名

案例:定义变量a并且其值为10,随后设置其为只读变量,再去尝试重新赋值

1.4 、接收用户输入(重点)

语法:read -p 提示信息 变量名

案例:编写一个脚本test6.sh,要求执行之后提示用户输入文件的名称(路径),然后自动为用户创建该文件

1.5、删除变量(了解)

语法:unset 变量名path

案例:定义变量b=20,再输出b的值,随后删除b,最后再输出下b

2、条件判断语句

语法1(一个条件):

if condition

then

command1

command2

fi

单行写法(一般在命令行中执行的时候):if [ condition ]; then command; fi

语法2(两个条件):

if condition1

then

command1

elif condition2

then

command2

else

commandN

fi

3、运算符

在shell中,运算符和其他编程脚本语言一样,常见的有算数运算符、关系运算符、

逻辑运算符、字符串运算符、文件测试运算符等。

[En]

Logical operator, string operator, * file test operator * , etc.

3.1 、算数运算符

常用的算术运算符:

注意:

条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]

表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2

完整的表达式要被 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

3.2、关系运算符

关系运算符只支持数字,不支持字符串 ,除非字符串的值是数字

下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:

shell脚本

-eq:equal

-ne:not equal

-gt:great than

-lt:less than

-ge:great than or equal

-le:less than or equal

3.3、逻辑运算符

下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:

shell脚本

或运算:一个为真即为真,全部为假才是假

与运算:一个为假即为假,全部为真才是真

3.4、字符串运算符

下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:

shell脚本

3.5、文件测试运算符(重点)

文件测试运算符用于检测 Unix/Linux 文件的各种属性。

属性检测描述如下:

shell脚本

注意:权限几个判断,如果只有一个部分符合,则认为是有权限的。

4、shell脚本附带选项(重点)

问题描述:在linux shell中如何处理tail -10 access.log这样的命令行选项?

步骤:

调用tail指令

系统把后续选项传递给tail

Tail先去打开指定的文件

取出最后10行

问题:自己写的shell是否也可以像内置命令一样传递一些选项呢?

答:是的,送货方式和上面描述的一样,关键是如何接收。

[En]

A: yes, the delivery method is the same as the above description, the key is how to receive it.

例如:

传递:

./test.sh a b c

接收:

在脚本中可以用”$1″来表示a,”$2″来表示b,以此类推。

接收可以用”$ “加上选项对应的序号即可。

Original: https://www.cnblogs.com/komorebiZjh/p/16029956.html
Author: 搁浅的小鲸鱼
Title: shell脚本

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/523984/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • jmeter压测 报connect reset和unexpected end of file from server的解决方案

    今天做负载压测,500并发没有报错,500并发以上就报错,报错率很高,主要有两种错误: 报错1: 报错2: 解决方案: 1.压测机的注册表中添加 DefaultReceiveWin…

    Linux 2023年6月8日
    095
  • JavaScript事件处理(三)

    上机三 JavaScript事件处理 目的: 熟练掌握JavaScript事件处理机制 重点理解面向对象编程思想,并构建程序。 要求: 定义一个按钮,动态生成DIV,可以生成多个D…

    Linux 2023年6月13日
    098
  • shell练习:svndiff & change_ip

    在shell中写代码,有些命令比较常用,所以整合到一起来实现一些小功能,笔记一下: 第一个脚本是用来对比SVN中的不同版本的不同,借助了svn自身的命令行工具和vimdiff工具:…

    Linux 2023年5月28日
    0101
  • 分布式计算的本质、特点和未来

    在计算机早期,都是由一台主机承担全部存储和计算工作,这种方式被称为集中处理。后来随着处理器发展和网络出现,衍生出客户机/服务器架构,即由服务器完成主要的存储计算工作,客户机则负责较…

    Linux 2023年6月6日
    0121
  • PyTorch介绍-保存和加载模型

    本节我们将会看到如何保存模型状态、加载和运行模型预测 import torch import torchvision.models as models 保存和加载模型权重 PyTo…

    Linux 2023年6月14日
    0100
  • 一个轻量级的C++ log日志库

    一、简介 为了自己使用写的一个简单日志库,使用仅需包含一个头文件,支持Windows和Linux平台,支持多线程控制台输出以及写日志文件。 二、调用方式 #include &quo…

    Linux 2023年6月7日
    092
  • 5.9 Linux Vim批量注释和自定义注释

    使用 Vim 编辑 Shell 脚本,在进行调试时,需要进行多行的注释,每次都要先切换到输入模式,在行首输入注释符 #再退回命令模式,非常麻烦。 连续行的注释其实可以用替换命令来完…

    Linux 2023年6月7日
    093
  • Shell中判断文件,目录是否存在

    一. 具体每个选项对应的判断内容: 二.常用的例子: Original: https://www.cnblogs.com/DreamDrive/p/7706585.htmlAuth…

    Linux 2023年5月28日
    092
  • Guava中的封装的Map操作

    引入依赖 <dependency> <groupId>com.google.guavagroupId> <artifactId>guava…

    Linux 2023年6月7日
    0116
  • 截止2021年底,我国18个税种中已有12个税种完成立法

    截止2021年底,我国18个税种中已有12个税种完成立法: 1.中华人民共和国个人所得税法 (自1980年9月10日起施行)2.中华人民共和国企业所得税法 (自2008年1月1日起…

    Linux 2023年6月14日
    0412
  • 关于熵,条件熵,交叉熵等的介绍

    参考:《数学之美》一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉详解机器学习中的熵、条件熵、相对熵和交叉熵常用的分类问题中的损失函数 1.信息量与信息熵 香农在他著名的…

    Linux 2023年6月13日
    098
  • 代码审计-Typecho反序列化getshell

    0x01 漏洞代码 install.php&#xFF1A; php $config = unserialize(base64_decode(Typecho_Cookie::…

    Linux 2023年5月28日
    095
  • RabbitMQ超详细安装教程(Linux)

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 1、简介 官网:https://www.rabbitmq.com/ RabbitMQ是一个开源的遵循AMQP协议实现的基于Erl…

    Linux 2023年5月27日
    0177
  • Python List 中的append 和 extend 的区别

    方法的参数不同 append 方法是向原list的末尾添加一个对象(任意对象;如元组,字典,列表等),且只占据一个原list的索引位,添加后无返回值,直接在原列表中添加。 list…

    Linux 2023年6月7日
    094
  • ip、ifconfig 和 route命令介绍与网络配置

    linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中…

    Linux 2023年6月6日
    0100
  • Linux命令之find、grep、echo、tar、whoami、uname

    1. whoami–查看当前登录的用户名 book@100ask:~/linux$ whoami book 2. echo–打印命令,配合’&g…

    Linux 2023年6月6日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球