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 “提示信息必须要有:“”

-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 先减后用

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

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

相关文章

hadoop_概念

前言&#xff1a; 本篇文章仅用于个人学习笔记&#xff0c;仅限于参考&#xff0c;内容如有侵权&#xff0c;请联系删除&#xff0c;谢谢&#xff01; 一&#xff1a;大数据简介 大数据概念 : 指无法在一定时间范围内用常规软件工具进行捕管理和处理的数据集合&#xff0c;…

30岁迷茫?AI赛道,人生新起点

前言 30岁&#xff0c;对于许多人来说&#xff0c;是一个人生的分水岭。在这个年纪&#xff0c;有些人可能已经在某个领域取得了不小的成就&#xff0c;而有些人则可能开始对未来的职业方向感到迷茫。如果你正处于这个阶段&#xff0c;那么你可能会问自己&#xff1a;30岁转行…

lubuntu / ubuntu 配置静态ip

一、查看原始网络配置信息 1、获取网卡名称 ifconfig 2、查询网关IP route -n 二、编辑配置文件 去/etc/netplan目录找到配置文件&#xff0c;配置文件名一般为01-network-manager-all.yaml sudo vim /etc/netplan/01-network-manager-all.yaml文件打开后内容如下 # This …

美团强势领涨恒指,港股即将迎来触底反弹?

恒指早间低开低走&#xff0c;持续低位徘徊&#xff0c;一度试探万八关口&#xff0c;最低见17994点&#xff0c;市场情绪表现疲弱&#xff0c;大型科技股普遍走低&#xff0c;但主要指数午后回升&#xff0c;恒生科技指数率先转涨&#xff0c;美团(3690.HK)涨超4%领涨成分股&a…

网络数据库后端相关面试题(其三)

18&#xff0c; 传输控制协议tcp和用户数据报协议udp有哪些区别 第一&#xff0c;tcp是面向字节流的&#xff0c;基本的传输单位是tcp报文段&#xff1b;而udp是面向报文的&#xff0c;基本传输单位是用户数据报。 第二&#xff0c; tcp注重安全可靠性&#xff0c;连接双方在…

1997-2022年各省农村居民人均可支配收入数据(无缺失)

1997-2022年各省农村居民人均可支配收入数据&#xff08;无缺失&#xff09; 1、时间&#xff1a;1997-2022年 2、来源&#xff1a;国家统计局、统计年鉴 3、范围&#xff1a;31省 4、指标&#xff1a;农村居民人均可支配收入 5、缺失情况&#xff1a;无缺失 6、指标解释…

数据结构---力扣225.用队列实现栈(C

1.链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;【点击即可跳转】 思路&#xff1a; 栈 是 后进先出 队列 是 先进先出 &#xff08;始终保持一个队列为空的思路&#xff09; 入数据&#xff1a; 往 不为空的队列 中入 出数据&#xff1a; 把不为空的队列数…

Java使用Hutool工具类轻松生成验证码

一、效果展示 二、Hutool工具类实现验证码生成 2.1 引入依赖 <!--hutool工具包--> <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.15</version> </dependency2.2 简单实现方…

如何实现单例模式及不同实现方法分析-设计模式

这是 一道面试常考题&#xff1a;&#xff08;经常会在面试中让手写一下&#xff09; 什么是单例模式 【问什么是单例模式时&#xff0c;不要答非所问&#xff0c;给出单例模式有两种类型之类的回答&#xff0c;要围绕单例模式的定义去展开。】 单例模式是指在内存中只会创建…

C文件操作

目录 1. 为什么要使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3. 二进制文件和文本文件 ​编辑4.文件的打开和关闭 4.1 流和标准流 4.1.1 流 4.1.2 标准流 4.2 文件指针 4.3 文件的打开和关闭 5. 文件的顺序读写 5.1 顺序读写函数介绍 5.1.1 …

Python pandas openpyxl excel合并单元格,设置边框,背景色

Python pandas openpyxl excel合并单元格&#xff0c;设置边框&#xff0c;背景色 1. 效果图2. 源码参考 当涉及到比较复杂的设置背景色时&#xff0c;需要根据一些结果去对另一些单元格进行设置时&#xff0c;在行列上只能设置一种颜色&#xff0c;否则会被覆盖&#xff1b; 比…

Query传递的参数需不需要加注解?加什么?为什么有的时候要加有的时候不加?

Query传递过来的参数可以加&#xff0c;也可以不加注解。如果要加&#xff0c;是在传递的参数名和后端的变量名不一致的情况下&#xff0c;要加RequestParam如果传递过来的参数名和后端的变量名一致&#xff0c;则可以不加RequestParam。 传递过来的数据如果是通过 Query 方式…

Linux ldd和ldconfig

ldconfig ldconfig 查看默认库路径和ld.so.conf包含的库路径&#xff0c;来建立运行时动态装载的库查找路径。 ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),…

代码随想录算法训练营第五十五 | ● 583. 两个字符串的删除操作 ● 72. 编辑距离

583. 两个字符串的删除操作 https://programmercarl.com/0583.%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%88%A0%E9%99%A4%E6%93%8D%E4%BD%9C.html class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> d…

48.HTTP 规范规定,跟随重定向时必须使用 GET 方法

起因&#xff1a; 今天在练习一个Django功能时&#xff0c;把form的method设置为POST&#xff0c;但是实际提交时&#xff0c;一直是GET方法。最后&#xff0c;从下面这张图发现了端倪&#xff1a; 第一次是method是POST方法&#xff0c;被重定向时&#xff0c;变成了GET。 继…

2-1基于matlab的拉普拉斯金字塔图像融合算法

基于matlab的拉普拉斯金字塔图像融合算法&#xff0c;可以使部分图像模糊的图片清楚&#xff0c;也可以使图像增强。程序已调通&#xff0c;可直接运行。 2-1 图像融合 拉普拉斯金字塔图像融合 - 小红书 (xiaohongshu.com)

java程序在运行过程各个内部结构的作用

一&#xff1a;内部结构 一个进程对应一个jvm实例&#xff0c;一个运行时数据区&#xff0c;又包含多个线程&#xff0c;这些线程共享了方法区和堆&#xff0c;每个线程包含了程序计数器、本地方法栈和虚拟机栈接下来我们通过一个示意图介绍一下这个空间。 如图所示,当一个hell…

BC C language

题目汇总 No.1 打印有规律的字符(牛牛的字符菱形) 代码展示 #include<stdio.h> int main() {char ch0;scanf("%c",&ch);for(int i0;i<5;i){for(int j0;j<5;j){if((i0||i4)&&j2)printf("%c", ch);else if ((i 1||i3) &&…

发电机纵联差动保护的Simulink仿真

A相电压EA其电压有效值为6060V(对应额定电压为10.5kV的发电机)&#xff0c;相位设置为0。&#xff0c;EB的相位设置为-120。、EC的相位设置为120。&#xff0c;其他设置与EA相同。在图1中,是把A相和C相的电动势分成了两部分ɑ0.9,以仿真发电机内部A、C相故障的情况。 图1 发电机…

任务倒计时App

设计背景 在某一阶段可能需要给自己设置长期任务&#xff0c;比如找工作、考研等&#xff0c;需要一个单纯的任务计时工具&#xff0c;设置完任务的目标时间后&#xff0c;每次打开App时都能直接看到最新的剩余时间 设计步骤 1. 写java源码 由于需要界面显示&#xff0c;需…