Shell脚本和变量

Shell脚本

脚本就是可运行的代码的集合,脚本语言(计算机语言)脚本的特点:从上到下,按时执行。

python 脚本语言 格式更严谨 严格的执行缩进,也是从上倒下按行执行

shell脚本就是在shell环境(/bin/bash)bsah就是shell解释器,linux环境下的编程语句。

自动化运维,可重复执行的,自动化的在系统中实现曾删该查的操作。

shell的解释器

默认就是bash

sh:已经淘汰了

bash:sh的扩展版

csh:类c语言

tcsh:整合了c语言的shell

nolong:用户无法登录到系统的shell。

Shell的作用

1、自动运维

2、批量化的重复操作以及配合定时任务执行

3、有了脚本就可以减轻管理员的工作量

4、避免配置出错。

5、提供批量处理文件的速度

Shell脚本的构成

第一行:声明解释器

注释:以#开头 就是注释信息

在这里插入图片描述

Shell的执行方式

不给脚本执行权限的执行方式:

sh:就是在当前的shell里生成 一个子shell,运行结果不改变父shell的环境

bash:就是在当前的shell里生成 一个子shell,运行结果不改变父shell的环境

source:点命令,会改变当前shell的环境,也就是真正的执行代码

sh bash 用于调试脚本

第二种:

脚本调试完毕都是赋权执行。

重定向操作

标准输入:标准输入通常表示程序在接受数据的来源。当程序需要从用户或另一个程序获取输入时,他会从标准输入读取数据。在大多数情况下,标准输入是通过键盘输入的。

标准输出:标准输出是程序通常向其发送信息的位置,当程序产生输出时,它将输出写入到标准输出中。这些输出通常被显示在终端上

标准错误输出:标准错误输出用于程序报告错误和警告信息。与标准输出类似,标准错误输出通常也会显示在终端

重定向输出: > >> (标准输出)

> 标准输出的结果保存到指定的文件,而且会覆盖文件原有内容> 标准输出的结果存到文件,原有内容的尾部追加内容,不会覆盖原有的内容

2> 2>> 标准错误输出的结果,保存到指定文件。

&> &>> 混合输出,既可以保存标准输出,也可以保存标准的错误输出

:< c 从指定的文件获取数据

在这里插入图片描述

变量

变量的作用和类型,如何声明变量

变量的作用:用来存放系统和用户需要使用的设定的参数(值),变量保存在内存中。调用的时候

变量的类型:

自定义变量 名称由用户自定义 值也可以自定义

变量名的规范

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

2、不要使用中文

3、不要使用特殊符号开头,可以使用下划线开头,不要使用数字开头

4、变量名我们一般会使用对应的英文名称来使用,

5、变量名要保持前后一致,要有注释。提高代码的可读性

变量值的规范

int 整数 string 字符串 浮点0.12 布尔: true false

声明是字符串,需要用引号引起来

双引号 单引号 反撇号的作用和区别

双引号 弱引用


# vim test.sh 文本编辑
a="test"
echo "$a"
查看变量的值有没有
sh test.sh 
test  可以看到没有变化

单引号

# vim test.sh   文本编辑
a='test'
echo '$a'
查看变化
# sh test.sh 
$a

反撇号

# vim test.sh 
a=`ls /opt`
echo "$a"
查看内容
# ls
passwd.txt  test2.txt  test.sh
# sh test.sh 
passwd.txt
test2.txt
test.sh

双引号就是弱引用,变量值就是变量值本身

单引号就是强引用,变量值不再是本身定义的值,保持自身的字符的字符串形式

反撇号哦,命令替换,把命令的执行结果传给变量,作为变量的值,先执行命令,再给变量赋值

如何自定义输入变量的值

read -p “提示信息必须要有:” a

-p 指定提示符,提示符的内容包含在“ ”中间,“ ”可以为空,但是双引号必须要有(整数运算)

文本格式
read -p "提示信息:" a
read -p "数字b:" b
c=$(($a+$b))
echo $c
 结果
 # vim test.sh 
# sh test.sh 
提示信息:12
数字b:15
27

全局变量:对整个系统生效,所有用户都可以使用

全局生效,每个脚本的变量值,固定的 可进入到 /etc/profile 全局配置中添加 export添加 然后刷新服务
在这里插入图片描述

# source /etc/profile
# sh test.sh 
4  

持久性

共享性

全局变量适用于不需要经常更改的值,

排错方法:bash· -x+脚本名:检查语法错误

环境变量:环境变量是系统创建的,用来设置的用户的工作环境变量

环境变量可以理解为特殊的全局变量

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
可执行的命令,或者可执行的程序的默认路径
添加
PSTH=$PATH:/root”

位置变量:有叫做命令行参数,是在脚本的外面给脚本内部传值。

$1 $2 $3$4…$9

从第一个到弟九个

10以后要用{}把数字扩起来

# vim test.sh 
a=$1
b=$2
c=$(($a+$b))
echo $c
# sh test.sh 4 8
12

预定义变量:编程语言和解释器提供的,用户无法更改,只能由系统自行更新和设备。

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

在这里插入图片描述
$*和¥@ :不加引号的表现一致,都是把参数一个一个的处理

# sh test.sh 
1
2
3

$*:加了引号,会把参数当成一个整体来进行处理

# sh test.sh 
1 2 3

$# :也是全局变量,统计传递给脚本或者函数的参数个数

在这里插入图片描述
在这里插入图片描述

$? true false 命令执行之后返回的状态码

只有0,表示成功

# sh test.sh 
1
2
3
传了几个:3
# echo $?
0

所有非0的都表示失败

在文案中删除一行测试报错

在这里插入图片描述

返回最近一次执行命令的状态码

整数运算 + - × / %

a=20
b=6
c=$(($a+$b))
d=$[$a-$b]
e=$(expr $a \* $b)
let f=$a/$b
g=$(($a%$b))
echo $c $d $e $f $g
# sh test.sh 
26 14 120 3 2

小数运算

bc是一个简易的系统自带的计算机程序,可以执行整数,也可以计算小数
在这里插入图片描述

# sh test.sh 
输入第一个数11
输入第二个数11
22
# sh test.sh 
输入第一个数20.39
输入第二个数30.35 
50.74
 awk 'BEGIN {print 2.4*5.2}'  命令行模式
12.48

i++:先赋值,再加1 先用后加

++i:先加在赋值 先加后用

i-- 先用后减

–i 先减后用

小数运算

bc是一个简易的系统自带的计算机程序,可以执行整数,也可以计算小数

[外链图片转存中…(img-EPT3ukpQ-1718100979819)]

# sh test.sh 
输入第一个数11
输入第二个数11
22
# sh test.sh 
输入第一个数20.39
输入第二个数30.35 
50.74
 awk 'BEGIN {print 2.4*5.2}'  命令行模式
12.48

i++:先赋值,再加1 先用后加

++i:先加在赋值 先加后用

i-- 先用后减

–i 先减后用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

清华出品,开源最强,我又出手了(全网首发!)

清华出品的ChatGLM-6B自开源那刻起&#xff0c;GLM系列的每一次更新都受到了业界的热切关注。尤其是ChatGLM第3代开源之后&#xff0c;其强大和适配性让很多人惊叹&#xff0c;之后大家对GLM的第4代模型充满了期待。终于&#xff0c;今天它来了&#xff01;我要为大家介绍的是这…

RAG与知识库搭建

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&…

阿里云百炼开发AI大模型详解

AI项目功能设想描述文档 随着AI发展越来越迅速&#xff0c;各行各业都需考虑如何将AI结合到自己的产品中&#xff0c;目前国内大部分的AI问答网站&#xff0c;都是基于Open AI实现的&#xff0c;但是如何需要运用到企业产品中那我们考虑的因素就会比较多 将ChatGpt移植到企业中…

电流的本质是什么

话说很久以前&#xff0c;科学发现纯靠人眼识别。有一天&#xff0c;泰勒斯(古希腊哲学家&#xff0c;被称为科学的祖师爷)一时手痒&#xff0c;拿着琥珀与皮毛摩擦。 结果他发现那种半透明的小石头&#xff0c;居然产生了吸引小物体的魔力。 面对这个现象&#xff0c;老泰开始…

leetcode-04-[24]两两交换链表中的节点[19]删除链表的倒数第N个节点[160]相交链表[142]环形链表II

一、[24]两两交换链表中的节点 重点&#xff1a;暂存节点 class Solution {public ListNode swapPairs(ListNode head) {ListNode dummyHeadnew ListNode(-1);dummyHead.nexthead;ListNode predummyHead;//重点&#xff1a;存节点while(pre.next!null&&pre.next.next…

正大国际期货:原油投资出现亏损的五种心理弱点

在原油投资当中&#xff0c;有五种心理弱点最容易导致投资者失败&#xff0c;必须注意加以克服! 盲目胆大心理。 有些投资者从未认真系统地学习过投资理论技巧&#xff0c;也没有经过任何模拟训练&#xff0c;甚至连最起码的投资基础知识都不明白&#xff0c;就贸然的进入原油…

假期已结束,大家都开始上班了吗

千行赏金APP&#xff1a;一站式悬赏任务平台详解 一、功能特点 千行赏金APP&#xff0c;作为一个综合性的悬赏任务平台&#xff0c;其功能特点突出&#xff0c;为用户提供了丰富的体验。首先&#xff0c;用户可以在平台上发布各类任务&#xff0c;如填写问卷、参与调研、试玩游…

轻松掌握两种方法,教你jpg图片怎么改大小kb

在数字时代&#xff0c;我们经常需要在网络上传、分享或存储图片&#xff0c;而其中一项常见的挑战就是将图片的文件大小调整到符合特定要求。对于JPEG格式的图片&#xff0c;改变其大小&#xff08;以KB为单位&#xff09;是一种常见的需求&#xff0c;特别是在网络上传限制或…

华为OD技术面试-统计全1子矩形-2024手撕代码真题

题目描述: 给你一个 m x n 的二进制矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 。 示例 1: 输入:mat = [[1,0,1],[1,1,0],[1,1,0]] 输出:13 解释: 有 6 个 1x1 的矩形。 有 2 个 1x2 的矩形。 有 3 个 2x1 的矩形。 有 1 个 2x2 的矩形。 有 1 个 3x1 的矩形。…

新火种AI|摊上事儿了!13名OpenAI与谷歌员工联合发声:AI失控可能导致人类灭绝...

作者&#xff1a;小岩 编辑&#xff1a;彩云 2024年&#xff0c;OpenAI的CEO Sam Altman就没有清闲过&#xff0c;他似乎一直走在解决麻烦的路上。最近&#xff0c;他的麻烦又来了。 当地时间6月4日&#xff0c;13位来自OpenAI和Google Deep Mind的现任及前任员工联合发布了…

【OCPP】ocpp1.6协议第4.5章节Firmware Status Notification的介绍及翻译

目录 4.5、固件状态通知Firmware Status Notification-概述 Firmware Status Notification 消息 Firmware Status Notification 请求消息 Firmware Status Notification 响应消息 使用场景 举例 FirmwareStatusNotification 请求示例 处理 FirmwareStatusNotification …

Python YOLOv5 7.0 基于深度学习的口罩检测识别系统

目录 1&#xff0c;演示视频和资源下载 1.1 演示视频 1.2 资源下载 2&#xff0c;数据集 3&#xff0c;代码 3.1 带 PyQt5 UI 的检测程序&#xff0c;基于YOLOv5 7.0 3.1.1 根据训练结果进行检测 3.1.2 自动保存每张图片/每帧的检测结果 3.1.3 筛选查看每张图片/每帧检…

【小白学Python】自定义图片的生成(一)

目录标题 安装Pillowdemo代码初次代码计划 个人需要&#xff0c;基于文字生成图片。 除了AI外&#xff0c;对于简单的图片&#xff0c;Python在这方面也非常擅长。 我算是一个Python小白&#xff0c;除了业余时尝试过Python基本语法的练习&#xff0c;从未真正使用过Python。…

存储协议入门-UPIU简介

写在前面:本文参考UFS jedec3.1,本文思维导图如下,详细内容关注微信:存储协议探索 ​ 1. UPIU架构 UPIU是UFS协议中的一种数据包格式,用于传输应用层的各种请求和命令,UFS采用的是客户-服务端架构,UFS主机(客户)主动发起请求,UFS设备(服务)执行后并返回相应状态。…

物联网8大协议介绍及对比

一.物联网主流协议介绍 1.MQTT 协议 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;即消息队列遥测传输。 MQTT 协议最初是在 1999 年由 IBM 公司开发的&#xff0c;用于将石油管道上的传感器与卫星相连接。2014 年正式成为 OASIS 开放标准。 MQTT 使用…

57.WEB渗透测试-信息收集- 端口、目录扫描、源码泄露(5)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;56.WEB渗透测试-信息收集- 端口、目录扫描、源码泄露&#xff08;4&#xff09; 下载网站…

程序员们,如何预防大龄危机?

困境 在中国&#xff0c;程序员到了35岁&#xff0c;基本是一个坎&#xff0c;如果你还是通过常规的招聘网或者猎头去找工作&#xff0c;能拿到offer的比例相对低&#xff0c;因为跟新手程序员比&#xff0c;你没有明显的优势。 论薪资&#xff1a; 大龄程序员的薪资要求应该…

OSI七层网络参考模型

一、物理层 我们要发送出去的数据在计算机里只不过是无数的0和1&#xff0c;0或1就叫做比特&#xff0c;物理层就是把这些比特用不同的媒介传输出去&#xff0c;可以用电、光或者其他形式的电磁波来表示和传输信号&#xff0c;数据从网络接口出去以后&#xff0c;会经过不同的网…

DeepSpeed Huggingface模型的自动Tensor并行、kernel注入、训练阶段的优化版kernel

推理阶段。 在后台&#xff0c;1. DeepSpeed会把运行高性能kernel(kernel injection)&#xff0c;加快推理速度&#xff0c;这些对用户是透明的&#xff1b; 2. DeepSpeed会根据mp_size来将模型放置在多个GPU卡上&#xff0c;自动模型并行&#xff1b; import os import torch …

湖南大学CS-2023期末考试解析

前言 有幸作为助教参与信息院“周末夜校”讲解2023年试卷第2-3题&#xff08;汇编&#xff09;&#xff0c;借这个契机重新温习了一下这份试卷。 以下各部分的PPT由讲评助教分别完成并讲解。 1,6题 计科21杨助教2,3题 计科21甘晴void4,5题 智能21姚助教 由于2,3题过程较为繁…