shell编程二

shell 脚本规范

shell脚本文件需要以.sh结尾
第一个原因,让别人认的这个是shell脚本,sh后缀编辑时有高亮显示。
拓展名后缀,如果省略.sh则不易判断该文件是否为shell脚本

# 执行脚本方式
1、 sh 脚本.sh
2、 bash 脚本.sh
3、 ./脚本.sh  # 需要执行权限
4、 .  脚本.sh
5、 source 脚本.sh  子影响父
sh 和 source的区别:
    sh:当使用sh来执行脚本时,它会创建一个新的子进程来执行脚本,并且脚本中的变量和环境设置通常不会影响当前的shell环境
    source:使用source或.来执行脚本文件时,脚本中的命令会在当前Shell环境中执行,并且脚本可以修改当前Shell的变量和环境设置。


编辑脚本
#cat a.sh
#!/bin/bash
pwd
cd /opt
pwd
更换执行脚本方式执行显示如下

变量的类型

预定义变量
                            $$ 当前进程PID
                            $? 命令执行后的返回状态.0 为执行正确,非 0 为执行错误
                            $# 位置参数的数量
                            $* 所有位置参数的内容
                            $@ 所有的参数
                            $! 上一个后台进程的PID
​自定义变量
                        定义:变量名称=值
#注:
         变量名称:只能由字母,数字,下划线组成,不能以数字开头;
         注意:应该让变量名称有意义;
         = 赋值符号 前后不能有空格 ;
         值: 所有的字符串和数字都可以;
         引用变量: $变量名 或 ${变量名}。

​环境变量
                shell在开始执行时已经定义好的
                env 查看所有环境变量
                set  查看所有变量

环境变量拥有可继承性:export之后就拥有继承性
                export 导出变量(作用范围)
永久生效
        写到4个登陆脚本中 ~/.bashrc ~/profile 更好放在/etc/profile.d/* 下建立独立的环境变量配置文件

        常用环境变量: USER(用户名)
                                UID(用户uid)
                                HOME(家目录)
                                HOSTNAME(主机名)
                                PWD(所在目录)
                                PS1(命令提示符)
                                PATH(存储所有命令所在的路径)
位置变量
   $1 $2 $3 $...
编辑标本test.sh 加入位置变量$1 $2 

执行显示如下

变量运算

算式运算符: +、-、*、/、()、%取余(取模)  

运算方式:   $(())      $[]      expr

        $(())
例:      

         $[]
例:        
         expr
例:
#注:运算符号两边的空格必须写
        不能做浮点运算

乘法运算
例:
浮点运算
bash本身不能做小数计算:需要bc命令转换 (yum安装)
例:
                   #echo "2*4" | bc
                   #echo "2^4" | bc                  #2的4次方
                   #echo "scale=2;6/4" | bc     #6除以4保留小数点后两位
                   scale: 精度
结果如下
例2:
圆周率精确到1000位
#echo "scale=1000;4 * a(1)" | bc -l     #注 -l定义使用的标准数学库
结果如下

变量引用

转义:\
           当一个字符被引用时,其特殊含义被禁止
           把有意义的变的没意义,把没意义的变的有意义
常用参数
           \n换行
           \t table

 #echo -e '5\n6\n7'
结果如下 
完全引用:''   //强引 硬引
部分引用:"" //弱引 软引

变量替换-匹配截取

# 是去掉左边(在键盘上 # 在 $ 之左边)
% 是去掉右边(在键盘上 % 在 $ 之右边)
单一符号是最小匹配;两个符号是最大匹配(贪婪匹配)
例: 设置变量 file=/dir1/dir2/dir3/my.file.txt
${file#*/}:  拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt

${file##*/}: 拿掉最后一条 / 及其左边的字符串:my.file.txt

${file#*.}:  拿掉第一个 . 及其左边的字符串:file.txt

${file##*.}: 拿掉最后一个 . 及其左边的字符串:txt
${file%/*}: 拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3

读取用户标准输入:read

read:功能就是读取键盘输入的值,并赋给变量

#参数注:
-s '后面的内容是加密信息,不要输出'
-t 超时时间
例: 这里的藻头男是需要自己输入的,并且必须要在规定的五秒内输入才有效


变量嵌套(扩展)
eval 执行字符串内的可执行命令
例:
#name=zaotounan
#zaotounan=帅哥
#eval echo '$'"${name}"
结果如下

#注:先获取name的值,通过再次构造echo命令,使用eval再一次执行语句,就达到我们的目的。

扩展basename & dirname

basename 是去除目录后剩下的名字
# 不会检测文件系统,只是取路径的最后一段,将他截取出来

例:
        #temp=/home/temp/1.test
        #base=`basename $temp`
        #echo $base
结果为下

dirname 是去除文件的目录名
# 不会检测文件系统,默认路径的最后一段为文件名,把它扇区

例:
   #temp=/home/temp/1.test
   #dir=`dirname $temp`
   #echo $dir
结果为下

dirname 获取当前脚本的路径
#可用于判断脚本的位置
$( cd $( dirname $0 ) ; pwd )  
例:编辑脚本b.sh

path=$( cd $( dirname $0 ) ; pwd )  #设置变量path
[[ $path = '/opt' ]] && echo "继续执行" || echo "请在/opt目录下执行"
执行脚本结果如下

脚本运行

•sh –x script
                这将执行该脚本并显示所有变量的值

•sh –n script
                 不执行脚本只是检查语法模式,将返回所有错误语法

•sh –v script
                执行脚本前把脚本内容显示在屏幕上

感谢观看!希望能够帮助到大家!

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

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

相关文章

AIGC时代-GPT-4和DALL·E 3的结合

在当今这个快速发展的数字时代,人工智能(AI)已经成为了我们生活中不可或缺的一部分。从简单的自动化任务到复杂的决策制定,AI的应用范围日益扩大。而在这个广阔的领域中,有两个特别引人注目的名字:GPT-4和D…

洗地机怎么选?哪款洗地机好用?

选择洗地机前,我们需要对自己购买洗地机的需求做一个清洗的判断,吸尘器和扫地机智能解决地面基本的清洁问题,作为新兴的清洁工具洗地机越来越受大家的喜欢,洗地机的品类很多,洗地机到底该买哪款呢?我们先来看看挑选洗…

死锁-第三十四天

目录 什么是死锁 进程死锁、饥饿、死循环的区别 死锁产生的必要条件 什么时候会发生死锁 死锁的处理策略 本节思维导图 什么是死锁 每一个人都占有一个资源,同时又在等待另一个人手里的资源 进程死锁、饥饿、死循环的区别 死锁:各进程互相等待对…

ASP.Net实现海鲜添加(三层架构,异常处理)

演示功能: 点击启动生成页面 点击添加跳转新界面 此处设置文本框多行 点击Button添加 步骤: 1、建文件 下图是三层架构列表,Models里面有模拟数据库中列的类,DAL中有DBHelper和service,BLL中有BllManager文件用于ui界面直接调用…

SpringBoot之多环境开发配置

1 多环境开发配置 问题导入 在实际开发中,项目的开发环境、测试环境、生产环境的配置信息是否会一致?如何快速切换? 1.1 多环境启动配置 yaml文件多环境启动 不同环境使用—隔开 示例代码: spring:profiles:active: dev#生产…

易天推出10G SFP+ 可调 DWDM光模块:网络通信新升级

随着网络技术的飞速发展,为了满足用户对高速数据传输日益增长的需求。易天研发团队在原来的基础上推出了全新升级的10G SFP 可调 DWDM光模块,本文将详细介绍这款新升级光模块的特点、优势以及应用场景。 易天光通信10G SFP 可调 DWDM光模块具有出色的波…

QT基础知识

QT基础知识 文章目录 QT基础知识1、QT是什么2、Qt的发展史3、为什么学习QT4、怎么学习QT1、工程的创建(环境的下载与安装请百度)2、创建的工程结构说明3、怎么看帮助文档1、类使用的相关介绍2. 查看所用部件(类)的相应成员函数(功…

为什么说 $mash 是 Solana 上最正统的铭文通证?

早在 2023 年的 11 月,包括 Solana、Avalanche、Polygon、Arbitrum、zkSync 等生态正在承接比特币铭文生态外溢的价值。当然,因铭文赛道过于火爆,当 Avalanche、BNB Chain 以及 Polygon 等链上 Gas 飙升至极值,Arbitrum、zkSync 等…

多任务并行处理相关面试题

我自己面试时被问过两次多任务并行相关的问题: 假设现在有10个任务,要求同时处理,并且必须所有任务全部完成才返回结果 这个面试题的难点是: 既然要同时处理,那么肯定要用多线程。怎么设计多线程同时处理任务呢&…

.babky勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言: 网络安全威胁不断进化,其中.babky勒索病毒引起了广泛关注。这篇文章91数据恢复将深入介绍.babky的狡猾特征,以及在遭受其袭击时如何高效地恢复被加密的数据,并提供实用的预防方法。当面对被勒索病毒攻击导致的数据文件加密…

vue-vuex持久化处理

在src/utils文件夹下,创建storage.js文件 // 约定一个通用的键名 const INFO_KEY hm_shopping_info// 获取个人信息 export const getInfo () > {const defaultObj { token: , userId: }const result localStorage.getItem(INFO_KEY)return result ? JSON…

java多线程及线程锁

概述 程序(program):为完成特定任务,用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 进程(process):程序的一次执行过程,或是正在内存中运行的应用程序…

什么是自动化测试?为啥要学自动化测试?

什么是自动化测试,接着对常用的自动化测试框架进行了对比分析,最后,介绍了如果将自动化测试框架Cypress运用在项目中。 一、自动化测试概述 为了保障软件质量,并减少重复性的测试工作,自动化测试已经被广泛运用。在开…

【LLM】大型语言模型综述论文

今天我将与大家分享一篇精彩的论文。这项调查提供了LLM文献的最新综述,这对研究人员和工程师来说都是一个有用的资源。 为什么选择LLM? 当参数尺度超过一定水平时,这些扩展的语言模型不仅实现了显著的性能改进,而且还表现出一些…

一份阅读量13万+免费的C#/.NET/.NET Core面试宝典(基础版)

前言 C#/.NET/.NET Core相关技术常见面试题汇总,不仅仅为了面试而学习,更多的是查漏补缺、扩充知识面和大家共同学习进步。该知识库主要由自己平时学习实践总结、网上优秀文章资料收集(这一部分会标注来源)和社区小伙伴提供三部分…

c++编程要养成的好习惯

1、缩进 你说有缩进看的清楚还是没缩进看的清楚 2、i和i i运行起来和i更快 3、 n%20和n&1 不要再用n%20来判断n是不是偶数了&#xff0c;又慢又土&#xff0c;用n&10&#xff0c;如果n&10就说明n是偶数 同理&#xff0c;n&11说明n是奇数 4、*2和<<…

【EI会议征稿通知】第三届工程管理与信息科学国际学术会议 (EMIS 2024)

第三届工程管理与信息科学国际学术会议 (EMIS 2024) 2024 3rd International Conference on Engineering Management and Information Science 【国际高级别专家出席/新加坡机器人学会支持】 第三届工程管理与信息科学国际学术会议 (EMIS 2024)将于2024年4月12-14日在中国洛…

设计模式:工厂方法模式(讲故事图文易懂)

目录 简单工厂工厂方法模式 简单工厂 定义&#xff1a;简单工厂由一个工厂根据参数类型决定创建哪种产品的实例。 简单工厂不包含在23种设计模式之内&#xff08;简单工厂不满足开闭原则&#xff0c;后面会详细讲&#xff09; 举例&#xff1a;张三去4S店买了车&#xff0c;显…

网页爬虫对于网络安全有哪些影响?

在当今信息爆炸的时代&#xff0c;网络已经成为人们获取信息、交流思想和开展业务的重要平台。然而&#xff0c;随着网络的普及和技术的不断发展&#xff0c;网络安全问题也日益凸显&#xff0c;其中网页爬虫对网络安全的影响不容忽视。本文将就网页爬虫对网络安全的影响进行深…

从不同应用,划片机主要包括如下几个方面

在半导体行业中&#xff0c;划片机被广泛应用于各种材料和应用的切割和加工。根据不同的应用&#xff0c;划片机主要可以分为以下几个方面&#xff1a; 一、半导体材料划片 半导体材料划片是划片机最早的应用领域之一。在这个领域中&#xff0c;划片机主要被用于将半导体材料&…