变量与条件语句

news2024/11/17 13:37:57

目录

1、何为变量

变量的基础知识

1.1、取名字

1.2、弱引用和强引用

1.3、read -p

1.4、变量的作用范围

1.5、运算(整数)

1.6、环境变量

1.7、位置变量

1.8、预设变量 

2、条件语句

2.1、测试

2.1.1、比较整数数值

2.1.2、字符串比较

2.1.3、逻辑测试(短路运算)

2.1.4、双中括号

3.4.6 () {}

2.2、if

2.2.1、分支

2.2.2、case

2.3、echo


1、何为变量

变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念

所以保存将来会变化的数据,即使数据变化,直接调用变量即可

例如:

#!/bin/bash
i=1
echo "$i"
将 i 定义个变量 1
$i  代表  i的变量 及 1

变量的基础知识

常见的变量的类型:

自定义变量:由用户自己定义,修改和使用

环境变量:由系统维护,用于设置工作环境

只读变量:只可以读取不可以更改

位置变量:通过命令行给脚本传递参数

预定义变量:bash中自带的变量,不能修改

还有一些是系统内置变量RANDOM(随机数字0~32767 常用于余的计算:0到50随机一个数  i=$RANDOM%50+1)、UID(当前用户的UID)、USER(当前用户的名称)等

1.1、取名字

给变量取名字很有讲究:

  • 需要区分大小写,大是大,小是小
  • 不能使用程序中的保留字内置变量
  • 用的字符只可以是数字、字母和下划线,且不可以以数字开头
  • 名字尽量通俗易懂,越简单越好,但你自己要看的懂,别到时候自己都分不清了

变量引用的方式可以分为三种

直接引用:变量直接等于参数

变量引用:变量等于另一个变量

命令引用:变量等于命令的结果

name='123456'    直接引用
sum="$RANDOM"    变量引用
i=$(ls /opt/)    命令引用
y=`ls /mnt/`     命令引用
变量名=变量量

1.2、弱引用和强引用

什么时候用强引用,什么时候用弱引用

"$name " 弱引用,其中的变量引用会被替换为变量值

'$name ' 强引用,其中的变量引用不会被替换为变量值,而保持原字符串

1.3、read -p

将键盘输入的内容转变为变量

1.4、变量的作用范围

默认情况下,新定义的变量只在当前的shell环境中有效,因此称为局部变量,当进入子程序或新的shell环境中,局部变量将无法再起作用

可以通过内部命令export将指定的变量为全局变量,使用户定义的变量在所子shell环境中可以继续使用

 

1.5、运算(整数)

let格式:

let b=[变量]+[变量]

echo $b 

特殊格式:            i++           sum+=i 

1.6、环境变量

环境变量就是固定的变量,由系统提前创建,用来设置用户的工作环境,可以使用env查看环境变量

常用的环境变量:

$USER 表示用户名称

$HOME 表示用户的宿主目录

$LANG 表示语言和字符集

$PWD 表示当前所在工作目录

$PATH 表示可执行用户程序的默认路经

1.7、位置变量

位置变量也称为位置参数,使用$1、$2、$3、…、$9 表示

1.8、预设变量 

系统帮你定义好了 拿来用就可以了

  • $*:表示所有位置参数的内容看成一个整体返回 返回所有

  • $@:表示所有位置参数的内容分割成n份,每份作为一个独立的个体返回 返回所有

  • $?:表示前一条命令执行后的返回状态,返回值为 0 表示执行正确,返回任何非 0值均表示执行出现异常

  • $#:表示命令行中位置参数的总个数

  • $0:表示当前执行的脚本或程序的名称 当前脚本的名字

  • $$:当前进程id

  • $!: 后台任务最后一个id

2、条件语句

2.1、测试

test 测试文件的表达式 是否成立

操作符:

-d:测试是否为目录(Directory)

-e:测试目录或文件是否存在(Exist)

-a:测试目录或文件是否存在(Exist)

-f:测试是否为文件(File)

-r:测试当前用户是否有权限读取(Read)

-w:测试当前用户是否有权限写入(Write)

-x:测试当前用户是否有权限执行(eXcute)

-L: 测试是否为软连接文件

2.1.1、比较整数数值

[ 整数1 操作符 整数2 ] 公式

  • -eq:第一个数等于(Equal)第二个数

  • -ne:第一个数不等于(Not Equal)第二个数

  • -gt:第一个数大于(Greater Than)第二个数

  • -lt:第一个数小于(Lesser Than)第二个数

  • -le:第一个数小于或等于(Lesser or Equal)第二个数

  • -ge:第一个数大于或等于(Greater or Equal)第二个数

2.1.2、字符串比较

常用的测试操作符

  • =:字符串内容相同

  • !=:字符串内容不同,! 号表示相反的意思

  • -z:字符串内容为空

  • -n: 字符是否存在

2.1.3、逻辑测试(短路运算)

常见条件

  • -a或&&:逻辑与,“而且”的意思全真才为真

  • -o或||:逻辑或,“或者”的意思一真即为真

  • !:逻辑否

2.1.4、双中括号

[[ expression ]] 用法

== 左侧字符串是否和右侧的PATTERN相同,注意:此表达式用于[[ ]]中,PATTERN为通配符

=~ 左侧字符串是否能够被右侧的正则表达式的PATTERN所匹配,注意: 此表达式用于[[ ]]中;扩展的正则表达式

3.4.6 () {}

(CMD1;CMD2;...)和 {空格CMD1;CMD2;...; } 都可以将多个命令组合在一起,批量执行

2.2、if

根据不同选项,提供不同结果

2.2.1、分支

单分支

if 判断条件;

then   条件为真的分支代码

fi

双分支

if 判断条件; then
 条件为真的分支代码

else
 条件为假的分支代码

fi

多分支

if 判断条件1
then
 条件1为真的分支代码

elif 判断条件2
then
 条件2为真的分支代码

elif 判断条件3;then
 条件3为真的分支代码
else
 以上条件都为假的分支代码

fi

2.2.2、case

case         变量引用         in
1)                                分支1
 ;;
2)                                分支2
 ;;
...
*)
 默认分支
 ;;                                结束符号

2.3、echo

echo -n   表示不换行输出
echo -e   表示输出转义符
常用的转义符

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

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

相关文章

“智能监测”进泵房,管理开了“千里眼”

生活水泵房和消防水泵房作为楼宇中的主要基础设施之一,传统的生活水泵房和消防水泵房操作繁琐,需要人工控制,耗费大量成本。泵房的监测和维护工作困难,存在隐患无法及时发现和解决。此外,泵房的设备老化和能效低下&…

积跬步至千里 || 矩阵可视化

矩阵可视化 矩阵可以很方面地展示事物两两之间的关系,这种关系可以通过矩阵可视化的方式进行简单监控。 定义一个通用类 from matplotlib import pyplot as plt import seaborn as sns import numpy as np import pandas as pdclass matrix_monitor():def __init…

[C++ 网络协议编程] 域名及网络地址

1. DNS服务器 DNS(Domain Name System):是对IP地址和域名(如:www.baidu.com等)进行相互转换的系统,其核心是DNS服务器。 我们输入的www.baidu.com是域名,是一种虚拟地址,而非实际地…

图论基础和表示(Java 实例代码)

目录 图论基础和表示 一、概念及其介绍 二、适用说明 三、图的表达形式 Java 实例代码 src/runoob/graph/DenseGraph.java 文件代码: src/runoob/graph/SparseGraph.java 文件代码: 图论基础和表示 一、概念及其介绍 图论(Graph Theory)是离散数…

之前windows安装mysql时没有指定配置文件,现需修改默认端口号

一、之前windows安装mysql 在官网下载指定版本的mysql https://downloads.mysql.com/archives/community/ 我下载的绿色版的mysql解压到了D:\mysql-5.7.29-winx64 在系统变量中新建MYSQL_HOME它的值为D:\mysql-5.7.29-winx64 在系统变量中找到Path然后编辑添加%MYSQL_HOME%\…

开学有哪些好用电容笔值得买?ipad触控笔推荐平价

因为有了Apple Pencil,使得iPad就成了一款便携的生产力配件,其优势在于,电容笔搭配上iPad可以让专业的绘画师在iPad上作画,而且还能画出各种粗细不一的线条,对于有书写需求的学生党来讲,还是很有帮助的。但本人不敢想像…

多线程+隧道代理:提升爬虫速度

在进行大规模数据爬取时,爬虫速度往往是一个关键问题。本文将介绍一个提升爬虫速度的秘密武器:多线程隧道代理。通过合理地利用多线程技术和使用隧道代理,我们可以显著提高爬虫的效率和稳定性。本文将为你提供详细的解决方案和实际操作价值&a…

【1-3章】Spark编程基础(Python版)

课程资源:(林子雨)Spark编程基础(Python版)_哔哩哔哩_bilibili 第1章 大数据技术概述(8节) 第三次信息化浪潮:以物联网、云计算、大数据为标志 (一)大数据 大数据时代到来的原因…

options补充

前言 .NET Core 引入了Options模式,使用强类型的类来表达配置项,提供了三种在不同场景下的使用接口: IOptions IOptionsSnapshot IOptionsMonitor 但是常常不知道什么时候使用哪种方式才最合适,接下来我就用代码详细解读一下三种…

Python自动化小技巧20——python代码自动另存为文件

案例背景 我在使用openpyxl写入excel的公式的时候,我发现直接wb.save()存下来后,再进行读取的话,公式格子都是空值,需要手动另存为才会算出数值来...这太麻烦了,我写个周报算数据就是为了用代码自动化...还要手动另存…

「Paraverse平行云」助力数字栩生突破超写实数字人“千言”的实时交互挑战

“超写实数字人”一直是图形学界的圣杯之一,力求在虚拟世界中创造出逼真无比的3D人类角色,并使其能够实时与用户进行互动,营造身临其境的虚拟体验,超写实手语主持人“千言”便是“超写实数字人”领域的佼佼者。 “千言”由数字栩…

2337. 移动片段得到字符串

给你两个字符串 start 和 target ,长度均为 n 。每个字符串 仅 由字符 L、R 和 _ 组成,其中: 字符 L 和 R 表示片段,其中片段 L 只有在其左侧直接存在一个 空位 时才能向 左 移动,而片段 R 只有在其右侧直接存在一个 …

Linux内核学习(四)—— 系统调用(基于Linux 2.6内核)

在现代操作系统中,内核提供了用户进程与内核进行交互的一组接口,这些接口在应用程序和内核之间扮演了使者的角色。这些接口保证了系统的稳定可靠,避免应用程序肆意妄行。 一、与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中…

阿里云——云存储:对象存储管理与安全

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 一.传统存储介绍: 1.存储的发展历史 2.硬盘发展历史与趋势 3.SDD硬盘介…

谷歌浏览器最新版本进行控制台调试js代码时候无法显示代码行数

问题描述 谷歌浏览器打开控制台进行js代码调试,js代码没有行数显示想当难受 原因分析: 最新版本谷歌浏览器进行了自动设置关闭那个功能,要自己去设置 解决方案: 最终效果 舒服了

用C++/JS/Python/Java代码描述秋天的味道

前言 秋天是一个充满诗意和浪漫的季节,它带来了清新、芬芳和美食的味道。让我们一起探索如何用编程语言来写出秋天味道的代码吧!无论是C、JavaScript、Python还是Java,以下是几个简单的步骤来帮助你创造出充满秋天味道的代码: …

ChatGPT的创造力已达到人类顶尖水平-蒙大拿大学研究

美国蒙大拿大学的一项新研究表明,ChatGPT的创造力已经达到了前1%的人类思想家水平。研究人员对ChatGPT进行了托兰斯创造力思维测验(TTCT, Torrance Tests of Creative Thinking),并记录了8个回答。此外,他们…

C++破坏电脑病毒

写了这么多python病毒,今天我来给大家分享一个C病毒。 创作背景:我有个同学对电脑十分精通,而且对MBR十分感兴趣,他跟我分享了他怎么把MBR搞报废的历程。听完之后,我开始研究MBR。用python研究了2个月,结果…

Apache和Nginx各有什么优缺点,应该如何选择?

Apache和Nginx各有什么优缺点,应该如何选择? Apache和Nginx都有各自的优点和缺点,选择应该根据您的具体需求而定。Nginx的优点包括:轻量级,与同等web服务相比,Nginx占用更少的内存和资源;抗并发…

面试热题(不同的二分搜索树)

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 经典的面试题,这部分涉及了组合数学中的卡特兰数,如果对其不清楚的同学可以去看我以前的博客卡特兰数 …