Linux》》Shell脚本 基本语法

执行脚本的三种方式

查找变量的过程

变量引用的顺序》》先从当前进程查询变量,如果当前进程没有此变量,默认去父进程查找这个变量。如果查找到则返回,否则一直查找到 祖宗(PID为1),还没有,则就没找到。
export修饰变量,则表明这个变量对子进程是可见的。或者说 用export 修饰的变量,可以转递给子进程。

在这里插入图片描述

运算符

#  $((算式)) 是新语法  或  $[ 算式 ]  就语法 不推荐
# $((算式))  中的算式 可以用数学中 >=、*等  变量可省略 $   用途场景 数学运算、数值比较   不支持浮点型  
# $[ 算式 ]   大于 -gt,小于  lt等        变量可省略 $   用途场景 文件属性  、字符串

在这里插入图片描述

test

test expression

或者使用方括号的简写形式:

[ expression ] 这种更常用
注意:使用方括号格式时,表达式与方括号之间必须有空格,即 [空格EXPRESSION空格]
[ ] 》》》1, 即false
[ xx ] 》》0 ,即true
当 test 判断的表达式为真时,返回状态码为 0;如果为假,则返回非 0 值。

在这里插入图片描述
功能
test 命令可以进行以下几种类型的测试:

数值比较:检查两个数值之间的关系。

字符串比较:检查字符串是否相等或为空。

文件测试:检查文件是否存在、是否可读、是否可写等。

常用选项
数值比较
-eq:等于

-ne:不等于

-gt:大于

-lt:小于

-ge:大于等于

-le:小于等于

# 数值比较
#!/bin/bashnum1=10
num2=20if test $num1 -lt $num2; thenecho "$num1 小于 $num2"
elseecho "$num1 不小于 $num2"
fi

字符串比较
=:字符串相等

!=:字符串不相等

-z:字符串为空

-n:字符串非空

# 字符串比较
#!/bin/bashstr1="hello"
str2="world"if [ "$str1" = "$str2" ]; thenecho "字符串相同"
elseecho "字符串不同"
fi

文件测试
-e:文件存在 existence

-f:文件是普通文件 file 文件存在且是一个普通的文件

-d:文件是目录 directory 文件存在且是一个目录

-r:文件可读 read

-w:文件可写 write

-x:文件可执行 execute

# 文件测试
#!/bin/bashFILE="/etc/passwd"if [ -e "$FILE" ]; thenecho "文件 $FILE 存在"
elseecho "文件 $FILE 不存在"
fi

&& 、|| 跟高级语言 and ,or 一样, 还称短路 运算符

条件1 && 条件2   》》 如果条件1为  真 true,则会继续判断 条件2   》》 如果条件1为  假  false ,则不会执行 条件2
条件1  ||  条件2》》 如果条件1为  真 true,则不会执行 条件2   》》 如果条件1为  假  false ,则会继续判断  条件2

在这里插入图片描述
》》多重判断条件
在这里插入图片描述

流程控制

if 判断
#############   单分支 ############  
if [ condition ];thencommand
fi
# 或者
if [ condition ] 
thencommand
fi
############   多分支 ############  
if [ condition ]; thencommand
elif [ condition ] 
thencommand
else command
fi
case

相当于 C# 中 switch case
;; 相当于 break
*) 相当于 default

casein
模式1)command1command2...commandN;;
模式2)command1command2...commandN;;
esac
#!/bin/bash
while true
do
echo "请录入成绩的等级"
read num
case $num inA) echo "优秀";;B) echo "良好";;C) echo "及格";;*) echo '不及格';;
esac
done
~          

在这里插入图片描述

for
# 语法1
for (( 初始值; 循环控制条件; 变量变换  ))
docommand
done
# 例子
for((i=0;i<5;i++))
#  语法2
for var in item1 item2 ... itemN
docommand1command2...commandN
done
# 例子
for i in {0..4}
for i in `seq 0 4`
#  也可以写成一行
for var in item1 item2 ... itemN; do command1; command2… done;

#!/bin/bash
for (( i=1;i<=100;i++))
dosum=$((sum + i))  # 或  sum=$[ $sum + $i]
done
echo $sum  
while
# 基本语法
while [ 条件判断式 ]
docommand
done# 案例
#!/bin/bash
i=0
while [ $i -lt 101 ]
do((sum2=sum2+i))((i++))#或者# let sum2+=i# let i++# 或者换成 这种是旧语法  不推荐 # sum2=$[ $sum2 + $i ]# i=$[$i + 1]
done
echo $sum2

》》# 旧语法(不推荐)
result=$[4 * (5 + 1)]

》》# 新语法(推荐)
result=$((4 * (5 + 1)))
在这里插入图片描述

read 读取控制台输入

# 基本语法
read  (选项) (参数)
选项:-p   指定读取值时的提示符-t   指定读取值时等待的时间(单位秒),如果不加 -t,表示一直等下去
参数:变量:  指定读取值的变量名 (读取的赋给那个变量) 这个不能省略

在这里插入图片描述

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

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

相关文章

C#.VB.NET多线程,多用户下独立锁和全局锁的区别

以下代码,每个客户端都分配了一个锁吗? 用户WebSocket信息类Public Class UserWebSocketInfoPublic Property SessionID As StringPublic Property WebSocket As WebSocketPublic Property LastResponseTime As DateTimePublic Property PendingHeartbeatCount As IntegerPubl…

无人机加速器模块技术解析

一、加速器模块的运行方式 1. 传感器数据采集与融合 加速度计核心作用&#xff1a;测量三维线性加速度&#xff08;X/Y/Z轴&#xff09;&#xff0c;结合陀螺仪&#xff08;角速度&#xff09;和磁力计&#xff08;方向&#xff09;构成九轴姿态传感器&#xff0c;实时输出…

用html实现数字生命

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>数学粒子动画</title><style>body {mar…

SQLite3 在嵌入式系统中的应用指南

SQLite3 在嵌入式系统中的应用指南 一、嵌入式系统中 SQLite3 的优势 SQLite3 是嵌入式系统的理想数据库解决方案&#xff0c;具有以下核心优势&#xff1a; 特性嵌入式系统价值典型指标轻量级适合资源受限环境库大小&#xff1a;500-700KB零配置无需数据库管理员开箱即用无…

通义大模型与现有企业系统集成实战《CRM案例分析与安全最佳实践》

1. 集成架构设计 &#xff08;1&#xff09;混合部署架构演进 #mermaid-svg-eW4YPoU2fdbnT4xp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-eW4YPoU2fdbnT4xp .error-icon{fill:#552222;}#mermaid-svg-eW4YPoU2f…

leetcode:746. 使用最小花费爬楼梯

学习要点 动态规划正着推动态规划倒着推理解递归在动态规划与纯递归的类比分析中体会两者各自的特点 题目链接 746. 使用最小花费爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 题目描述 解法1&#xff1a;动态规划倒着推 // dp[i]--->从第i阶楼梯到达楼顶最小花费int…

汽车毫米波雷达增强感知:基于相干扩展和高级 IAA 的超分辨率距离和角度估计.

重庆西南大学毫米波雷达团队在IEEE Transactions on Consumer Electronics 上发表的一篇论文&#xff1a;《基于相干扩展和高级 IAA 的超分辨率距离和角度估计》。 本文深入研究了毫米波&#xff08;mmWave&#xff09;调频连续波雷达距离和角度的超分辨问题。首先&#xff0c;…

软件更新 | 从数据到模型,全面升级!TSMaster新版助力汽车研发新突破

为满足汽车电子开发领域日益增长的测试与仿真需求&#xff0c;TSMaster最新版本聚焦实车数据采集、MBD智能建模与新API扩展三大核心功能。无论您是进行车载网络测试、ECU开发还是自动化验证&#xff0c;新版本都能为您提供更高效、更可靠的解决方案&#xff01; TSMaster 2025.…

PDF-XSS

前言&#xff1a; PDF文件是一种复杂的文档格式&#xff0c;由一系列对象组成&#xff0c;包括字体、图像、页面内容等。PDF文件支持嵌入JavaScript代码&#xff0c;这使得PDF文件不仅可以显示静态内容&#xff0c;还可以执行动态操作。这种特性被攻击者利用来嵌入恶意脚本代码…

MySQL 表关联关系详解

MySQL 表关联关系详解 本文档详细列举了MySQL中常见的表关联关系场景以及对应的SQL语句示例。 1. 一对一关系 (One-to-One) 场景&#xff1a;用户表和用户详情表 一个用户对应一个用户详情通常用于将大表拆分&#xff0c;提高查询性能 -- 创建用户表 CREATE TABLE users (…

kubernetes(k8s)集群部署(超详细)

k8s部署 kubernetes集群图例kubernetes 安装仓库初始化1、创建云主机2、初始化私有仓库kube-master安装1、防火墙相关配置2、配置yum仓库(跳板机)3、安装软件包(master)4、镜像导入私有仓库5、Tab键设置6、安装代理软件包7、配置内核参数8、使用kubeadm部署9、验证安装结果计算…

「Flink」算子主要方法介绍

背景&#xff1a; 上期文章主要讲了Flink项目搭建的一些方法&#xff0c;其中对于数据流的处理很大一部分是通过算子来进行计算和处理的&#xff0c;算子也是Flink中功能非常庞大&#xff0c;且很重要的一部分。 算子介绍&#xff1a; 算子在Flink的开发者文档中是这样介绍的…

3405. 统计恰好有 K 个相等相邻元素的数组数目

3405. 统计恰好有 K 个相等相邻元素的数组数目 给你三个整数 n &#xff0c;m &#xff0c;k 。长度为 n 的 好数组 arr 定义如下&#xff1a; arr 中每个元素都在 闭 区间 [1, m] 中。恰好 有 k 个下标 i &#xff08;其中 1 < i < n&#xff09;满足 arr[i - 1] arr…

Spring AI 项目实战(十):Spring Boot + AI + DeepSeek 构建智能合同分析技术实践(附完整源码)

系列文章 序号文章名称1Spring AI 项目实战(一):Spring AI 核心模块入门2Spring AI 项目实战(二):Spring Boot + AI + DeepSeek 深度实战(附完整源码)3Spring AI 项目实战(三):Spring Boot + AI + DeepSeek 打造智能客服系统(附完整源码)4

impala中时间戳转(DATE)指定格式的字符串

注意i&#xff1a;注意大小写 timestamp\date–>string SELECT now(),from_timestamp(now(),yyyyMMdd);string->timestamp SELECT 20230710,to_timestamp(20230710,yyyyMMdd);日期加减 select 20231201,from_timestamp(date_add(to_timestamp(20231201,yyyyMMdd),1),…

百度下拉框出词技术解密:72小时出下拉词软件原理分享

如何才能刷下拉词&#xff1f;这个问题一直是企业做流量时最纠结的问题&#xff0c;百度下拉词作为百度搜索体验中的一项智能化功能&#xff0c;极大地方便了用户快速完成搜索&#xff0c;也成为了企业在搜索引擎优化&#xff08;SEO&#xff09;策略中的重要流量入口。通过研究…

上海人工智能实验室明珠湖会议首开,解答AI前沿疑问,推进科学智能

在通用人工智能&#xff08;AGI&#xff09;探索如火如荼的当下&#xff0c;如何加速突破&#xff1f;如何凝练关键问题、孕育颠覆性创新&#xff1f;2025年6月13日&#xff0c;上海人工智能实验室主任、首席科学家&#xff0c;清华大学惠妍讲席教授周伯文在首届明珠湖会议&…

BeyondCompare安装(永久免费使用+全网最详细版)

一.下载&#xff1a; 官网下载&#xff08;速度较慢&#xff09;&#xff1a; https://www.scootersoftware.com/download.php 阿里云盘&#xff08;不限速&#xff09; https://www.alipan.com/s/WaG1z54BQ2U 二.安装&#xff08;无脑下一步即可&#xff09; 三.永久免费…

如何用AI开发完整的小程序<7>—让AI微调UI排版

上一节我们介绍了如何让AI修改整体UI视觉效果。 不过有时候AI调整的并不理想&#xff0c;一些UI的布局还是需要微调。 比如已经实现的这个开始页面&#xff0c;我觉得标题太高了&#xff0c;这时候可以自己调&#xff0c;也可以让AI单独调&#xff0c;下面详细介绍。 一、手动…

64-Oracle Redo Log

小伙伴们&#xff0c;关于数据库的redo log相信大家都操作很多次了,且这是OCM考试必考内容。Oracle Redo Log是一种特殊的日志文件&#xff0c;用于完整地记录数据库中所有数据变更的详细信息。当数据库执行插如、更新或删除等更新操作&#xff0c;这些操作并不会立刻写入数据库…