Linux(四)

Linux(四)

  • shell脚本
  • shell脚本开发过程
    • 创建
      • 创建.sh文件
      • 编写.sh文件
      • 添加执行的权限 chmod 777 1.sh
      • 运行
    • shell中注释
    • shell中变量
      • 用户自定义变量 (尽量大写)
      • 位置参数即命令行参数
      • 预定义变量
      • 环境变量
  • shell中程序和语句
    • 说明性语句
    • 功能性语句
      • echo 输出
      • read 键盘读入变量值
      • expr 算术运算命令 (主要用于整数运算)
      • test命令
        • 字符串
        • 整数
        • 文件属性
    • 结构性语句
      • 顺序 echo read
      • 选择
      • 循环
  • shell中函数
    • 函数的定义
    • 函数的调用
      • 交叉编译工具步骤写成脚本

shell脚本

shell脚本(解释性语言):一堆shell命令的集合
在这里插入图片描述

shell脚本开发过程

创建

创建.sh文件

linux@ubuntu:~/24031/LinuxC/day4$ touch 1.sh

编写.sh文件

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

添加执行的权限 chmod 777 1.sh

linux@ubuntu:~/24031/LinuxC/day4$ ls -l
total 4
-rw-r--r-- 1 linux linux 5 49 22:37 1.sh
linux@ubuntu:~/24031/LinuxC/day4$ chmod 777 1.sh #修改.sh文件的权限
linux@ubuntu:~/24031/LinuxC/day4$ ls -l
total 4
-rwxrwxrwx 1 linux linux 5 49 22:37 1.sh

运行

linux@ubuntu:~/24031/LinuxC/day4$ ./1.sh
2024年 04月 09日 星期二 22:40:17 PDT

shell中注释

# shell中的脚本

在这里插入图片描述

shell中变量

用户自定义变量 (尽量大写)

变量名的命名规范:
<1>.由数字,字母,下划线组成,首字母不能为数字
<2>.不能为关键字或保留字
<3>.尽量见名知意

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

位置参数即命令行参数

由系统提供的参数称为叫位置参数

在这里插入图片描述

预定义变量

预定义变量是在shell一开始时就定义了的变量

$# 包含命令行参数的个数
$@ 包含所有命令行参数:“$1…$9”
$* 包含所有命令行参数:“$1…$9”
$$ 包含正在执行进程的ID号
$? 包含上一个命令的退出状态,正常退出返回0,反之为非0值

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

环境变量

环境变量 用于所有的用户进程

在这里插入图片描述

shell中程序和语句

说明性语句

#!/bin/bash 告诉计算机使用哪个办法去解析我们的代码

功能性语句

echo 输出

在这里插入图片描述

read 键盘读入变量值

在这里插入图片描述

expr 算术运算命令 (主要用于整数运算)

在这里插入图片描述

test命令

test语句可测试3种对象

字符串

s1 = s2 测试两个字符串是否完全一样
s1 != s2 测试两个字符串是否有差异
-z s1 测试s1字符串的长度是否为0
-n s1 测试s1字符串的长度是否不为0

在这里插入图片描述

整数

a - eq b (equal)
a -ne b
a -gt b (great)
a -ge b
a -lt b (little)
a -le b

在这里插入图片描述

文件属性

-d name 测试name是否为一个目录
-f name 测试name是否为一个文件
-L name 测试name是否为符号链接
-r name 测试name文件是否存在且为可读
-w name 测试name文件是否存在且为可写
-x name 测试name文件是否存在且可执行

在这里插入图片描述

结构性语句

顺序 echo read

选择

单分支

if [条件满足]
then语句
fi

双分支

if [条件满足]
then语句1
else语句2
fi

多分支

if [条件1满足]
then 语句1
elif [条件2满足]
then 语句2
elif [条件3满足]
then 语句3
.......
else语句n
fi
case 字符串变量 in模式1)命令表1;;模式2)命令表2;;模式3)命令表3;;.......*)命令表n+1;;
esac

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

1.请输入一个文件,判断它是否是普通文件
如果是普通文件,判断它是否有写的权限,
如果有写的权限,向文件中写入"hello world"
如果文件没有写的权限,给它添加写权限后,写入 “hello world”
在这里插入图片描述

循环

for循环

#带列表的for循环
for 变量名 in 列表
do命令表
done

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
while循环

#while语法
while [条件为真]
do命令表
done

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

shell中函数

函数的定义

方式一

函数名()
{函数体
}

方式二

function 函数名()
{函数体
}
#编写两个数求和的函数
function add()
{#$1表示第一个参数 $2表示第二个参数RES=`expr $1 + $2`echo "$1 + $2 = $RES"return $RES
}

函数的调用

方式一

变量名=`函数名 参数列表`
函数的所有标准输出都传递给了主程序的变量

在这里插入图片描述
方式二

函数名 参数列表
echo $? #上一个命令的退出状态

在这里插入图片描述

交叉编译工具步骤写成脚本

1、将交叉编译工具链压缩包拖到虚拟机的某个目录下
2、打开终端,进入该目录
3、解压
sudo tar -xzvf gcc-4.6.4.tar.gz(名字根据实际文件名替换)
注意:解压时,压缩包的名字可以使用tab键自动补全
4、
进入到该目录,直到进入bin目录
5、使用pwd命令,得到该目录的绝对路径,并将该目录的绝对路径拷贝下来
6、sudo vim /etc/profile
7、在该文件的末尾加上
export PATH=$PATH:/home/linux/gcc-4.6.4/bin
注意:“$PATH:"后的路径为你刚才拷贝的绝对路径
8、添加完成后,保存退出
9、重启虚拟机
10、打开终端,输入arm-liunx-gcc 然后tab键,如果能够自动补全,则说明交叉编译工具链已安装成功
#jiaocha.sh 运行该shell脚本,直接安装叫交叉编译工具
sudo ./jiaocha.sh
#!/bin/bash
cd $HOME #进入用户主目录
sudo tar -xzvf gcc-4.6.4.tar.gz #解压到当前目录
cd gcc-4.6.4/bin
myPATH=`pwd`
echo "myPATH=$myPATH"
echo "export PATH=\$PATH:$myPATH" >> /etc/profile
sudo shutdown -h now

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

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

相关文章

网上打印试卷的步骤是什么

对于学生和家长来说&#xff0c;打印试卷是日常学习中的一项重要需求。那么&#xff0c;如何在网上方便地打印试卷呢&#xff1f;下面&#xff0c;就让我来为您介绍琢贝云打印的试卷打印步骤。 一、选择琢贝云打印的原因 支持多种文件格式打印&#xff0c;包括图片、PPT、PDF、…

每日百万交易的支付系统,如何设置JVM堆内存大小?

每日百万交易的支付系统,如何设置JVM堆内存大小? 1、支付背景的引入2、支付的核心业务流程3、每日百万交易支付系统的压力在哪里?4、支付系统每秒钟需要处理多少笔支付单5、每个支付订单处理需要耗时多久6、每个支付订单大概需要多大的内存空间7、每秒发起的支付请求对内存的…

手撕C语言题典——消失的数字

目录 前言 一&#xff0c;思路 1)排序查找 2&#xff09;数据求和&#xff0c;依次减去中值 3&#xff09; 异或 二&#xff0c;异或的代码实现 前言 依旧是一道力扣上的题&#xff0c;通过不同思路的不同时间复杂度来分析&#xff0c;让我们看看有什么不同。 面试题 17…

贪心-ACW803区间合并-XMUOJ力量碎片合并

题目 思路 附上几个参考链接 for(auto i : v)遍历容器元素_for auto 遍历-CSDN博客 C pair的基本用法总结&#xff08;整理&#xff09;_c pair用法-CSDN博客 使用 sort 实现自定义排序 - AcWing 话不多说&#xff0c;直接上代码 代码 /* ACW803区间合并-XMUOJ力量碎片合…

第13章-循迹功能 循迹小车讲解 原理分析 STM32智能小车循迹教程 红外对管使用 PID循迹算法分析

讲解一下我们小车里面的循迹部分&#xff0c;包括红外基础使用&#xff0c;无PID循迹和有PID循迹。 第13章-循迹功能 13.1-非PID循迹功能完成 先红外对管调试 我们这里学习一下&#xff0c;如何实现循迹功能 如何才能让小车沿着黑线运动、要让小车感知到黑线的位置&#x…

C/C++ vector详解

要想了解STL&#xff0c;就必须会看&#xff1a; cplusplus.comhttps://legacy.cplusplus.com/ 官方内容全都是英文的&#xff0c;可以参考&#xff1a; C/C初始识https://blog.csdn.net/2301_77087344/article/details/138596294?spm1001.2014.3001.5501 vector&#xff…

sql聚合函数使用-笔记

sql聚合函数使用-笔记 SELECT SUM ( case when procurement_type 公益推送 then 1 else 0 end ) gywxTotal,SUM ( CASE WHEN (status 1 and procurement_type 公益推送) THEN 1 ELSE 0 END ) gywxYsc,SUM ( CASE WHEN (status ! 1 and procurement_type 公益推送) THEN 1 …

辐射度技术在AI去衣中的魅力与科学

引言&#xff1a; 在当今的数字化时代&#xff0c;人工智能正逐渐渗透到我们生活的方方面面。其中&#xff0c;AI去衣技术作为一项颇具争议但又不失其科技创新的应用&#xff0c;正引起越来越多的关注和讨论。而在实现高质量图像渲染的过程中&#xff0c;辐射度技术凭借其卓越的…

CAD二次开发(5)-用户交互仿系统命令

1. 工具类&#xff1a;PromptTool.cs using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Geometry; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace _04用户交互 {public static…

GEE26:批量导出逐日、逐月、逐季节和逐年的遥感影像(以NDVI为例)

影像导出 写在前面1.逐日数据导出2.逐月数据导出3.季节数据导出4.逐年数据导出 写在前面 最近很多小伙伴们私信我&#xff0c;问我如何高效导出遥感数据&#xff0c;从逐日到逐季度&#xff0c;我都有一套自己的方法&#xff0c;今天就来和大家分享一下&#xff01;   &#…

基于YOLOv8+PySide6的快递分类管理系统

1、背景 随着电子商务的飞速发展&#xff0c;快递行业所承受的数据处理需求愈发庞大。在这样的背景下&#xff0c;传统的手工分类方法已经显得力不从心&#xff0c;因其不仅耗时耗力&#xff0c;还存在着易出错的隐患。因此&#xff0c;迫切需要研发出一套高效而准确的自动化系…

多线程案例(线程池)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:<计算坤是如何工作的>&#x1f649; &#x1f439;今日诗词:百年兴衰皆由人, 不由天&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&…

go 微服务框架kratos使用中间件的方法

一、中间件的概念 在go语言中&#xff0c;中间件是一种用于处理http请求的开发模式&#xff0c;允许开发人员在请求到达处理程序之前或之后执行特定的操作&#xff0c;如日志记录、身份验证、错误处理等。 中间件通常是一个函数&#xff0c;它接收一个 http.Handler 作为参数…

Ardupilot开源代码之Rover上路 - 后续4

Ardupilot开源代码之Rover上路 - 后续4 1. 源由2. 深度配置2.1 设置倒车按钮2.1.1 前进2.1.2 倒退 2.2 MP无法连接ESP82662.3 最小油门校准 3. 遗留&后续3.1 高精度编码器问题3.2 OV5647 720P30FPS 马赛克问题 4. 参考资料 1. 源由 开源项目最主要的问题就是所有配置是开放…

信息安全从运维到运营:CISAW安全运维方向

随着数据中心规模扩大&#xff0c;安全运维内生需要逐渐向安全运营进化&#xff0c;统一安全理念&#xff0c;提高服务意识&#xff0c;提升专业能力。安全运营是对安全运维的继承式发展&#xff0c;而不是颠覆&#xff0c;意味着以业务发展为基础&#xff0c;以事件核查为线索…

【gradle】MAC下用gradle构建部署springboot项目

MAC下用gradle构建部署springboot项目 前言下载安装配置gradle下载安装下载可能出现的问题 &#xff08;zsh: command not found: brew&#xff09; 配置环境变量配置国内下载源全局配置单个项目配置 通过idea构建项目构建后的项目结构 小结延伸 前言 好久以前就听说gradle了&…

RAG概述(一):RAG架构的演进

目录 概述 RAG核心步骤 Indexing索引 Retrieval检索 Generation生成​​​​​​​ Native RAG Advanced RAG Modular RAG 参考 概述 RAG&#xff1a;Retrieval-Augmented Generation 检索增强生成。 RAG通过结合LLMs的内在知识和外部数据库的非参数化数据&#xff…

与MySQL的初相遇

&#x1f30e;初识MySQL 注&#xff1a;本文SQL语句只为了验证猜想&#xff0c;不会也不要紧。 文章目录&#xff1a; MySql开端 认识数据库       什么是数据库       主流数据库       MySQL的本质 MySQL基础使用       连接mysql服务器     …

自动化您的任务——crewAI 初学者教程

今天&#xff0c;我写这篇文章是为了分享您开始使用一个非常流行的多智能体框架所需了解的所有信息&#xff1a;crewAI。 我将在这里或那里跳过一些内容&#xff0c;使本教程成为一个精炼的教程&#xff0c;概述帮助您入门的关键概念和要点 今天&#xff0c;我写这篇文章是为了…

easy-rule规则引擎使用

简介 轻量级的规则引擎&#xff0c;易于学习的api 简单来说&#xff0c;规则引擎就是一个函数&#xff1a;yf(x1,x2,…,xn) 将业务代码和业务规则分离&#xff0c;解耦业务决策和业务代码的绑定关系 入门示例 依赖引入 <dependency><groupId>org.jeasy</grou…