shell脚本和编程

您所在的位置:网站首页 linux调用接口单引号不识别怎么办 shell脚本和编程

shell脚本和编程

2023-05-20 17:46| 来源: 网络整理| 查看: 265

shell脚本和编程|青训营笔记 shell课前准备 一、学习shell的价值: Linux服务器的基本操作和管理 前端Node.js服务的进程管理、问题排查、资源监控等运维操作 使用shell编写TCE、SCM、Docker脚本,完成服务编译和部署 二、shell课前准备: 一台安装了Linux系统的物理机或者云主机,可运行shell脚本 本地的vscode安装Bash Debug插件,并升级bash到4.x 以上 Npm全局安装zx依赖 三、shell基础概念:

image.png Shell是一个命令解释器,它接收应用程序的/用户命令,然后调用操作系统内核; Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强,还可以提供给用户接口,使用丰富的GNU工具集,第三方的或者内置的,比如cd、pwd、exec、test、netstat等

shell构成:

image.png

shell语法和命令 变量:

1、命名规则:由字母数字下划线组成,但首字母不能是数字,不能使用bash中的关键字,赋值号的周围不能有空格。 image.png

image.png

自变量定义

#!/bin/bash

这是脚本文件的shebang,它告诉系统脚本文件使用哪种解释器来执行。在这个例子中,使用的是bash解释器

#变量名=变量值(等号左右不能有空格),定义了两个变量page_size和page_num,并分别给它们赋值为1和2

page size=1

page_num=2

#将命令复制给变量,这样可以通过变量名来执行命令。

_ls=ls

#将命令结果赋值给变量,可以通过变量名来访问命令结果

file_list=$(ls -a)

#默认字符串,不会进行 + 运算。所以total的值为"page_size*page_num"字符串

total=page_size*page_num

#声明变量为整型(-i),后续的数值计算中,total会被当作整型来处理

let total=page_size*page_num

declare -i total=page_size*page_num

#导出环境变量,使得其在子进程中也可用

export total

declare -x total

image.png

系统环境变量

image.png ~表示进入当前用户的主目录,比如用户名是www, 那么命令cd 表示进入/home/www目录,.bashrc隐藏文件夹,/.bashrc就是指用户目录下的.bashrc目录。是通配符,/etc/profile.d/.sh 表示 /etc/profile.d/ 目录下所有的脚本文件(以.sh结尾的文件)。

配置文件加载

image.png 如果取得 bash 需要完整的登录流程, 我们称之为 login shell, 比如 ssh 远程登录一台主机

不需要登录的bash 我们称为 non-login bash, 比如在原来的 bash 中执行 bash开启子进程、 执行一些外部命令

如果修改了配置文件,不会立即生效,要通过source ~/.bashrc执行此文本使其生效

无论是否是交互式,是否是登录式,Bash Shell 在启动时总要配置其运行环境,例如初始化环境变量、设置命令提示符、指定系统命令路径等。这个过程是通过加载一系列配置文件完成的,这些配置文件其实就是 Shell 脚本文件。

运算符和引用

image.png

双引号:部分引用,使用这种引用时,$、`(反引号)、(转义符) 这 3 个还是会解析成特殊的意义

单引号:完全引用,只原样输出

反引号:执行命令

 cmd & 实现让命令在后台运行

使用方法一的时候,当我们关闭终端,命令就会停止运行。加上nohup可以在关闭终端后不停止命令

注意:

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

2、乘号(*)前边必须加反斜杠()才能实现乘法运算;

3、if…then…fi 是条件语句,后续将会讲解。

4、在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 “*” 不需要转义符号"" 。

shell管道:

定义:将一个命令的输出作为另一个命令的输入******

语法:cmd1 | cmd2******

要求:管道右侧的命令必须能接受标准输入才行,比如grep命令,ls、mv等不能直接使用,可以使用xargs预处理******

注意:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遇到管道错误退出

重定向

每个 shell 命令在执行时都会打开三个文件描述符, 文件描述符0、1、2, 分别对应 stdin、stdout、stderr, 这三个文件描述符默认默认指向 终端输入、终端输出,那么当命令需要获取输入的时候,它会去读取 fd0, 当要输出的时候它会像 fd1、fd2写入, 改变这些描述符指向的行为叫做重定向

image.png

:将命令的输出重定向到一个文件中,如果文件不存在则创建,如果文件已经存在则覆盖。

:将命令的输出重定向到一个文件中,如果文件不存在则创建,如果文件已经存在则在文件末尾追加。

2>:将命令的错误输出重定向到一个文件中,如果文件不存在则创建,如果文件已经存在则覆盖。

&>:将命令的输出和错误输出重定向到一个文件中,如果文件不存在则创建,如果文件已经存在则覆盖。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3