ubuntu(20.04)-shell脚本(1)-基本概念

news2024/11/26 22:35:41

目录

1.概述

2.shell脚本调用形式

3.shell语法初识

        3.1 定义以开头:#!/bin/bash

        3.2 单个“#”号代表注释当前行

4.变量

                  4.1 只读变量

         4.2 环境变量: env

         4.3 预测变量:

         4.4 变量扩展: 是否存在,字符串操作

5.条件测试:

                 5.1 文件测试

         5.2 字符串测试

         5.3 数值测试

         5.4 符合语句测试

6.控制语句

        6.1 if语句

        6.2 case

        6.3 for

        6.4 while

        6.5 until

        6.6 break continue

7.函数


1.概述


shell命令解析器:
系统提供 shell命令解析器: sh ash bash
查看自己linux系统的默认解析:echo $SHELL

 


2.shell脚本调用形式



打开终端时系统自动调用:/etc/profile 或 ~/.bashrc



  2.1 /etc/profile


:系统级的环境变量,开机自启动。跟windows里的“高级设置”->"环境变量"->"系统变量”一样。


 

2.2 ~/.bashrc
 

用户自己的家目录中的.bashrc
登录时会自动调用,打开任意终端时也会自动调用
这个文件一般设置与个人用户有关的环境变量,如交叉编译器的路径等等
用户手动调用:用户实现的脚本

 

 


3.shell语法初识

        3.1 定义以开头:#!/bin/bash

         3.2 单个“#”号代表注释当前行

        

 


              第一步:编写脚本
              第二步:加上可执行权限
              第三步:运行
                           ./xxx.sh  :先按文件中 #!指定的解析器解析
                           bash xxx.sh :指明先用 bash解析器解析
                           .xxx.sh 直接使用默认解析器解析


4.变量

        4.1 只读变量

                 定义(num=10)+引用变量($num)+清除(unset)+键盘获取(read)(num=$num)                   

                 

 

          

 


         4.2 环境变量: env

           导出环境变量 作用:(让其他shell脚本识别该变量,设为全局变量)
           env
           source FileName

           source .bash_rc 与 . .bash_rc 是等效的。
           注意:source命令与shell scripts的区别是,
           source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。
 

           示例:把一个变量写入环境变量中。

#1.编辑一个shell脚本 06_sh.sh 文件内容如下。
#2.cmd:
   source 06_sh.sh
#3.查看是否添加完成 cmd:
   env
#4. 其他脚本读取
   #!/bin/bash
   echo "DATA=$DATA"

    

06_sh.sh             

#!/bin/bash
export DATA=100

 

 注意事项:

1、变量名只能包含英文字母下划线,不能以数字开头
     1_num=10 错误
     num_1=20 正确
2、等号两边不能直接接空格符,若变量中本身就包含了空格,则整个字符串都要用双引号、或单       引号括起来
3、双引号 单引号的区别
     双引号:可以解析变量的值
     单引号:不能解析变量的值

4.如果想在PATH变量中 追加一个路径写法如下:(重要!!!!)

    export PATH=$PATH:/需要添加的路径


         

4.3 预设变量:


 


 

 

 

 脚本变量的特殊用法

 


         

4.4 变量扩展: 是否存在,字符串操作

 

 


5.条件测试:

test命令有两种格式:
test condition 或[ condition ]
使用方括号时,要注意在条件两边加上空格。


         5.1 文件测试



         5.2 字符串测试

 2.测试:变量$yn中是否有空串。
 3. 输出:$? 命令返回状态:0表示没有
 

 5.输入:变量$yn
 6.测试:变量$yn是否有空串
 7.输出:$? 命令返回状态:1 表示有

 9.测试:变量$yn是否=“y”
10.输出:$? 命令返回状态:0表示不等
 


         5.3 数值测试



 

 

5.测试:两个变量 $data1 $data2是否相等
6. 输出:$? 命令返回状态:1 表示相等



         5.4 符合语句测试

 


6.控制语句


        6.1 if语句







 

 

           2.请输入:变量$yn
           3.如果变量$yn=="y"
           7.fi 结尾
 

 2.请输入:文件夹的名字
 4.if 判断为1: [ -e ] (文件目录是否存在)  then(关键字)
       5. 打印:
       6. 进入文件夹
       7. 打印:
       8. 创建文件
 9.if 判断为0 :else
 16.结束
 


        6.2 case

 2.输入变量:$choice
 3.case $choice变量 是 yes 或者 y* 或者 Y*
 5.打印:
 6.;;条件1结束
 7.
 8.打印:
 9.;;条件2结束
10.*)其它

 


        6.3 for


 

 


        6.4 while
 


        6.5 until


        6.6 break continue





 


7.函数

 

 

 

3.关键字 function  函数名 my_max() 
14.函数调用:
15.打印:

 

24_sh.sh 中调用 fun.sh
 

 

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

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

相关文章

通过JMH框架 测试公平锁与非公平锁的性能(附测试代码和源码分析)

目录 先上测试代码: 上依赖: 输出结果:(注意不要debug运行,直接运行代码,否则报错) 源码-公平锁的 lock 方法: 源码-非公平锁的lock方法: 总结 非公平锁和公平锁的两处不同: …

docker入门之一:docker基础概念与安装

1. Docker简单介绍 1.1. 什么是docker?1.2. Docker和传统虚拟机1.3. 为什么使用docker1.4. docker架构 2. Docker安装 2.1. docker版本命名2.2. docker安装2.3. docker卸载2.4. docker镜像加速器 1. Docker简单介绍 1.1. 什么是docker? google go语言…

24-Tomcat

目录 1.Tomcat是什么? 2.版本号 3.下载 4.目录介绍 4.1.bin目录 4.2.conf目录 4.3.logs目录 4.4.webapps目录 5.启动服务器 PS:解决Tomcat乱码问题 PS:Tomcat点击启动,控制台一闪而过,啥也没有解决方案 PS…

【花雕学AI】4月5日,ChatGPT中国财经背景分析:昨天沪指重返3300点,这说明了什么?

在这里插入图片描述 附录: 一、ChatGPT是一个可以和你聊天的人工智能程序,它可以用文字回答你的问题,也可以根据你的提示写出文章、歌词、代码等内容。ChatGPT是由一个叫OpenAI的机构开发的,它使用了一种叫做GPT的技术&…

TCP协议的相关特性(续)

TCP协议的相关特性🔎滑动窗口🔎流量控制🔎拥塞控制🔎延时应答🔎捎带应答🔎面向字节流(粘包问题)🔎异常情况🔎总结关于 确认应答 超时重传, 连接管理 请参考: 点击这里 &#x1f50e…

IT知识百科:什么是基站?

一、基站介绍 基站(Base Station),也称为基站站点或基站设备,是无线通信网络中的关键设备之一。基站用于与移动设备(如手机、无线网卡等)进行通信和数据传输,实现无线通信覆盖。 二、基站的功…

基于Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用

Python是功能强大、免费、开源,实现面向对象的编程语言,能够在不同操作系统和平台使用,简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库,还有丰富的第三方库,Python在数据处理、科学计算、数学建模、数据挖…

Web服务器压力测试

Web服务器压力测试 使用WebBench去进行网站的压力测试 1、去github下载项目源码webbench 2、download到本地 3、将压缩包上传到虚拟机上 4、解压,使用命令:unzip 压缩包名 5、 cd WebBench-mask6、构建项目 makemake install7、上述动作完成后&…

【Vue3】如何用Vue CLI 创建一个Vue3的初始化项目

第一步、安装Vue Cli npm install -g vue/cli 安装成功后,就可以在命令行工具中,使用vue命令。 检测是否安装成功,可以用 vue -V 出现版本号,代表安装成功。 第二步、创建项目 为了方便管理项目,我先在 github 创建了…

队列实现图书信息管理(C语言)

文章目录Queue.hmain.cQueue.c用队列实现一个图书信息管理,这里放一下有哪些文件。(ps:我之前写的是学生信息管理,但是有人说我们的作业是写图书,就该了下内容,没有改文件名)队列是用链表实现的…

***大论文中插入Visio不失真方法:word插入viso图片方法

***大论文中插入Visio不失真方法:word插入viso图片方法1、可以直接导出emf2、如果利用emf导致字符间距过大,可以选择下面方式1、可以直接导出emf 导出emf方法: 打开visio --> 另存为 --> 选择emf格式文件 打开word --> 插入图片&a…

6 计时器(三)

6.4 输出比较演示** 演示1:PWM驱动呼吸灯** 函数解释: 输出比较单元(掌握) void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCIni…

对Redis 的数据结构的更深刻理解

文章目录简单动态字符串SDS与C字符串的区别链表字典哈希算法 —— 添加新键值对的过程rehashrehash一般过程渐进式rehash渐进式rehash的详细步骤跳跃表实现整数集合intset升级步骤升级好处降级压缩列表 ziplistziplistnode连锁更新对象字符串对象列表对象哈希对象编码转换集合对…

RK356X 解除UVC摄像头预览分辨率1080P限制

平台 RK3566 Android 11 概述 UVC: USB video class(又称为USB video device class or UVC)就是USB device class视频产品在不需要安装任何的驱动程序下即插即用,包括摄像头、数字摄影机、模拟视频转换器、电视卡及静态视频相机…

详解C++中的命名空间(namespace)

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C之路】 目录C关键字(C98)命名冲突命名空间命名空间的定义局部域和全局域的关系命名空间域小结命名空间中可以定义哪些内容嵌套命名空间…

音视频开发常用分析工具介绍

综述 工欲善其事,必先利其器;兵马未到,粮草先行。 在音视频开发过程中,利用工具可以更方便、更直观、更快捷的分析音视频的数据,便于开发过程中分析、调试和解决问题。 现总结一些音视频开发过程中常用的分析工具。…

Android library native 代码不能调试解决方法汇总

android native开发会碰到native代码无法调试问题,而app主工程中的native代码是可以调试的。如果项目中存在多个module,那么在application模块中依赖library模块,并且library模块中有native代码的时候,当debug library模块中的这些…

如何高效获取数据价值?

导读:上一篇《大数据架构知识点详解:国产数据库创新、湖仓一体实践…》中我们阐述了四大体系之数据架构体系,解释了云原生大数据实践、国产数据库创新变革、湖仓一体落地实践、OLAP 发展趋势四个论坛的架构思路。 接下来是四大体系之二数据效…

【Linux】2、Linux 的基本命令

目录一、Linux 的目录结构二、Linux 命令三、ls 命令四、cd五、pwd六、特殊路径符七、mkdir八、touch九、cat 命令十、more十一、cp十二、mv十三、rm十四、which十五、find十六、grep十七、wc十八、管道符十九、echo二十、重定向符二十一、tail 命令一、Linux 的目录结构 &…

直播观看指南|SOFA 五周年,Live Long and Prosper!

SOFA 五周年活动将于 2023 年 4 月 15 日(周六)12:00 在北京朝阳区恒通国际创新园 C6 栋 C work 举行!期待社区的小伙伴和对开源感兴趣的小伙伴们一起来现场玩哦~当然啦,不能来现场的小伙伴们也别担心,我们…