shell编程规范和脚本变量

什么是shell

人和计算机内核之间的中介:

计算机的语言是二进制,把人类的语言翻译成计算机能够识别的语言,然后让内核来处理

内核完成之后要把结果反馈给用户,要把计算机的翻译成人类能够识别的语言

命令解释器,pycharm idel vscode

linux当中的shell有哪些:

1、bash 主流,也是现在市面上绝大多数的linux系统默认的shell

2、sh bash是sh的升级版

3、csh 类C语言的shell

4、tcsh 和CSH类型,相当于升级版

5、nologin:也是一种shell,禁止用户登录

shell----脚本:扩建语言,或者是动态语言,是一种编程的语言,控制软件的应用程序,只要在被调用时,才会执行

脚:把保存在文本中的代码执行起来

本:保存在文本中的代码,特定条件(运行代码的条件)

shell脚本的作用:

自动化运维

批量化重复操作可以通过脚本和计划任务来进行自行运行。

减轻了管理人员的工作量

避免配置出错

在工作中所有的脚本都是赋权执行的

★shell脚本的结构:

创建一个子shell环境,只在这个子环境当中运行,不会“真正”的执行代码。运行结束,子环境也会退出。

1、bash 调试模式

source 点命令:真正的运行可执行的代码

2、赋权执行

/opt/first.sh

3、定时任务------》绝对路径

重定向:就是把这些信息保存到指定的文件当中去

重定向输入

重定向输出  >  只能把标准输入保存到文件当中去,如果原文有内容会直接覆盖  >>  标准输出保存到文件当中去

重定向错误输出   2>   将错误信息保存到指定的文件,文件当中的内容也会被覆盖

                            2>>  将错误信息保存到指定的文件,文件当中的内容不会被覆盖而是在行后追加

混合输出             &> 将标准输出、标准错误保存到同一文件中,覆盖原内容

                            &>> 将标准输出、标准错误保存到同一文件中,文件当中的内容不会被覆盖而是在行后追加

★变量:用来存放系统和用户需要使用的特定的参数

变量名:

系统定义好的,每个用户都可以使用(全局变量)一般情况下是不可以修改的

自定义变量:主要是用户定义的名称和名称对应的参数(值)

★自定义变量名:

1、不要使用系统的命令作为变量名称

2、不要使用中文

3、变量名不能使用特殊符号来开头

4、定义变量时,一定要是字母开头,不能以数字开头。

5、变量名最好是对应的名称的英文全称或者简写。

变量值:

int ............... 整数,没有小数点

string ............ 字符串,字母或者数字组成,会用引号引起来

布尔 ............. true false 为真还是为假

打印变量

echo  $number

★弱引用和强引用

“  ”:弱引用打印变量时,加上双引号就是变量的值

‘  ’:强引用打印变量时,就是字符串本身,不在代表变量对应的值

变量的作用范围

1、全局变量(主要是系统定义的,不能改的)

在全局配置文件当中修改,export 变量名=值

所有的用户都可以使用

如果有需要一直不变的参数可以供所有人使用,就可以配置全局变量

副作用:一旦有改动,会增加复杂性

2、环境变量(也是全局变量的一种),系统创建的,设置用户的工作环境由系统维护,一般用户是不去修改的,让所有人都可以自动识别到(自动补齐)

3、位置变量,脚本外传参

$1  $2

4、预定义变量(全局变量的一种,脚本解释器提供的,或者是编程语言自带的,不能修改)

★$*  $@:表示命令或者脚本需要处理的参数,区别在于处理方式不同

区别:"$",会把传入的参数当做一个整体来进行处理,不加双引号和$@是一样的,都是一个一个处理

$@,加不加双引号,都会把参数一个一个的处理

$#:记录传递给脚本参数的个数

$?:记录的上一次执行命令的返回码,用来判断上一次执行的命令是否成功

0和非0

只有0表示上一次的命令执行成功,其他的都是失败

整数运算

整数运算是指对整数进行的算术运算。常见的整数运算包括加法、减法、乘法和除法(只取商的整数部分)。

非整数运算

通常指对浮点数(小数)进行的算术运算。常见的非整数运算包括加法、减法、乘法和除法(结果可以是小数)。

num=$(echo "4.4+5.5" | bc)

num1=$(awk 'BEGIN{print 4.45*1.2}' )

echo $num1

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

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

相关文章

二分查找类型算法

今天开始刷题啦&#xff0c;坚持住哟&#xff01; 使用二分法的前提是数组有序且无重复元素。 704.二分查找 第一遍代码如下&#xff1a; class Solution {public int search(int[] nums, int target) {int left0;int rightnums.length-1;while(left<right){int mid (r…

【Pikachu】XML外部实体注入实战

若天下不定&#xff0c;吾往&#xff1b;若世道不平&#xff0c;不回&#xff01; 1.XXE漏洞实战 首先写入一个合法的xml文档 <?xml version "1.0"?> <!DOCTYPE gfzq [<!ENTITY gfzq "gfzq"> ]> <name>&gfzq;</name&…

多模块集成swagger(knife4j-spring-boot-starter)

前言 单体项目、多模块单体项目、微服务项目&#xff0c;集成的方案大同小异&#xff0c;微服务会在网关做个聚合&#xff0c;后面再补充。 依赖版本 目前demo的版本如下&#xff1a; spring boot 2.7.3spring cloud 2021.0.4spring cloud alibaba 2021.0.4.0knife4j-sprin…

uni-app快速入门(七)--组件路由跳转和API路由跳转及参数传递

uni-app有两种页面路由跳转模式&#xff0c;即使用navigator组件跳转和调用API跳转&#xff0c;API调转不要理解为调用后台接口的API&#xff0c;而是指脚本函数中使用跳转函数。 一、组件路由跳转 1.1 打开新页面 打开新页面使用组件的open-type"navigate",见下面…

DataStream编程模型之数据源、数据转换、数据输出

Flink之DataStream数据源、数据转换、数据输出&#xff08;scala&#xff09; 0.前言–数据源 在进行数据转换之前&#xff0c;需要进行数据读取。 数据读取分为4大部分&#xff1a; &#xff08;1&#xff09;内置数据源&#xff1b; 又分为文件数据源&#xff1b; socket…

CSS盒子的定位>(上篇)#定位属性#相对定位-附练习

一、定位属性 1.定位方式 position属性可以选择4种不同类型的定位方式。 语法格式&#xff1a;position&#xff1a;relation | absolute | fixed参数&#xff1a;①relative生成相对定位的元素&#xff0c;相对于其正常位置进行定位。 ②absolute生成绝对定位的…

django从入门到精通(六)——auth认证及自定义用户

Django 提供了一个强大的用户认证系统&#xff0c;允许开发者轻松管理用户的注册、登录、权限和组等功能。以下是对 Django 用户认证系统的详细介绍&#xff0c;包括默认的用户认证、自定义用户认证和权限设置。 1. 默认用户认证 1.1 用户模型 Django 默认提供了一个用户模型…

Redis/Codis性能瓶颈揭秘:网卡软中断的影响与优化

目录 现象回顾 问题剖析 现场分析 解决方案 总结与反思 1.调整中断亲和性&#xff08;IRQ Affinity&#xff09;&#xff1a; 2.RPS&#xff08;Receive Packet Steering&#xff09;和 RFS&#xff08;Receive Flow Steering&#xff09;&#xff1a; 近期&#xff0c;…

MySQL 中有哪几种锁?

在 MySQL 中&#xff0c;锁&#xff08;Locks&#xff09;是为了保证数据的一致性和完整性而设计的机制。常见的锁可以从粒度和操作类型两个角度分类。以下是详细介绍&#xff1a; 按 粒度 分类 1. 全局锁 描述&#xff1a;锁定整个数据库实例。用途&#xff1a;主要用于备份…

重置docker版本的octoprint管理员账号密码

我的情况是octoprint安装在HiNAS系统的机顶盒上&#xff0c;只有一个账号&#xff0c;但是忘记了用户名和密码。有两个选择&#xff1a; 可以试试先找回用户名&#xff0c;然后尝试你的常用密码。直接重置所有账号。 1.找回用户名&#xff1a; 使用使用 docker exec -it <…

OpenCPN-插件之dashboardsk_pi

官网链接地址 DashboardSK Plugin 当前仅仅是编译和运行,后续需要研究代码! 其中编译的时候需要下载需要依赖libs,之后就可以交叉编译 corey@fcyswrd-15:~/opencpn/opencpnbuildroot/opencpn_plugins/dashboardsk_pi$ git submodule update --init Submodule opencpn-lib…

WordPress设置自动更新CSS版本号

WordPress 通常会在引用 CSS 文件时添加版本号参数&#xff08;?verx.x.x&#xff09;。如果版本号未更新&#xff0c;浏览器可能继续加载旧的文件。 解决方法&#xff1a;确保你在 functions.php 文件中正确加载了 CSS 文件&#xff0c;并动态更新版本号。例如在functions.p…

若依权限控制

springbootvue2项目中的权限控制(若依项目) 步骤: 1.登录管理员账号,为普通用户增加权限按钮 绿色部分为权限控制字符 2.在后端对应的方法上增加权限控制(这里以删除操作为例):PreAuthorize(“ss.hasPermi(‘area:store:remove’)”) 3.在前端对应的按钮上增加权限控制:v-ha…

【机器学习】如何配置anaconda环境(无脑版)

马上就要上机器学习的实验&#xff0c;这里想写一下我配置机器学习的anaconda环境的二三事 一、首先&#xff0c;下载安装包&#xff1a; Download Now | Anaconda 二、打开安装包&#xff0c;一直点NEXT进行安装 这里要记住你要下载安装的路径在哪&#xff0c;后续配置环境…

网络协议之Ethernet

一、Ethernet协议的基本概念、原理和发展历程 **Ethernet&#xff08;以太网&#xff09;**是一种局域网&#xff08;LAN&#xff09;技术&#xff0c;用于在局域网范围内传输数据。它是最常见、最广泛使用的局域网技术之一&#xff0c;允许多台设备&#xff08;如计算机、打印…

论文解析:计算能力资源的可信共享:利益驱动的异构网络服务提供机制

目录 论文解析:计算能力资源的可信共享:利益驱动的异构网络服务提供机制 KM-SMA算法 KM-SMA算法通过不断更新节点的可行顶点标记值(也称为顶标),利用匈牙利方法(Hungarian method)来获取匹配结果。在获取匹配结果后,该算法还会判断该结果是否满足Pareto最优性,即在没…

OceanBase 升级过程研究(4.2.1.6-4.2.1.8)

模拟业务 使用benchmark加载10仓数据模拟业务场景 升级方法 使用滚动升级方式来进行OB升级。该方法前提是OB集群必须满足官方规定的高可用架构(如果 Zone 个数小于 3&#xff0c;滚动升级时则无法构成多数派), 滚动升级的原理就是轮流完成每个ZONE的升级工作&#xff0c;由于…

HTTP 请求方式

深入理解 HTTP 请求方式 在 Web 开发中&#xff0c;HTTP 请求方式起着至关重要的作用。它们决定了客户端如何与服务器进行交互以及服务器如何响应这些请求。本文将深入探讨不同的 HTTP 请求方式及其应用场景。 一、GET 请求 GET 请求是最常见的 HTTP 请求方式之一。它用于从服…

微知-DOCA ARGP参数模块的相关接口和用法(config单元、params单元,argp pipe line,回调)

文章目录 1. 背景2. 设置参数的主要流程2.1 初始化2.2 注册某个params的处理方式以及回调函数2.4 定义好前面的params以及init指定config地点后start处理argv 3. 其他4. DOCA ARGP包相关4.1 主要接口4.2 DOCA ARGP的2个rpm包4.2.1 doca-sdk-argp-2.9.0072-1.el8.x86_64.rpm4.2.…

C#.Net筑基-字符串超全总结

字符串是日常编码中最常用的引用类型了&#xff0c;可能没有之一&#xff0c;加上字符串的不可变性、驻留性&#xff0c;很容易产生性能问题&#xff0c;因此必须全面了解一下。 01、字符与字符编码 1.1、字符Char 字符 char 表示为 Unicode字符&#xff0c;在C#中用 UTF-16 …