shell编程学习

shell编程学习

  • 变量的高级用法
    • 变量替换
    • 字符串处理
      • 获取字符索引
      • 获取子串长度
      • 抽取字符串中的子串
    • 案例测试

变量的高级用法

变量替换

##变量替换(贪婪,从前往后匹配,匹配到进行删除)
test1='I love you,you love me'
echo $test1
handletest1=${test1##*ov}
echo $handletest1

在这里插入图片描述

##变量替换(非贪婪,从前往后匹配,匹配到进行删除)
test2='I love you,you love me'
echo $test2
handletest2=${test2#*ov}
echo $handletest2

在这里插入图片描述

##变量替换(非贪婪,从后往前匹配,匹配到进行删除)
test3='I love you,you love me'
echo $test3
handletest2=${test3%ov*}
echo $handletest2

##变量替换(贪婪,从后往前匹配,匹配到进行删除)
test3='I love you,you love me'
echo $test3
handletest2=${test3%%ov*}
echo $handletest2

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

handletest2=${test3/ov/ef}
handletest2=${test3//ov/ef}

在这里插入图片描述

字符串处理

[root@localhost ~]# var1="Hello world"
[root@localhost ~]# len=${#var1}
[root@localhost ~]# echo $len
11
[root@localhost ~]#

在这里插入图片描述

[root@localhost ~]# len=`expr length "$len"`
[root@localhost ~]# echo $len
2
[root@localhost ~]#

在这里插入图片描述

获取字符索引

[root@localhost ~]# var1="Quickstart is a app"
[root@localhost ~]# ind=`expr index "$var1" start`
[root@localhost ~]# echo $ind
6
[root@localhost ~]# ind=`expr index "$var1" uniq`
[root@localhost ~]# echo $ind
2
[root@localhost ~]# ind=`expr index "$var1" cniq`
[root@localhost ~]# echo $ind
3
[root@localhost ~]#

在这里插入图片描述

获取子串长度

[root@localhost ~]# var1="quicstart is a app"
[root@localhost ~]# sub_len=`expr match "$var1" app`
[root@localhost ~]# echo $sub_len
0
[root@localhost ~]# sub_len=`expr match "$var1" quic`
[root@localhost ~]# echo $sub_len
4
[root@localhost ~]# sub_len=`expr match "$var1" quic*`
[root@localhost ~]# echo $sub_len
4

在这里插入图片描述

抽取字符串中的子串

[root@localhost ~]# var1="kafka hadoop yarn mapreduce"
[root@localhost ~]# substr1=${var1:10}
[root@localhost ~]# echo $substr1
op yarn mapreduce
[root@localhost ~]# substr2=${var1:10:5}
[root@localhost ~]# echo $substr2
op ya
[root@localhost ~]# substr3=${var1:-5}
[root@localhost ~]# echo $substr3
kafka hadoop yarn mapreduce
[root@localhost ~]# substr5=`expr substr "$var1" 10 5`
[root@localhost ~]# echo $substr5
oop y
[root@localhost ~]# substr3=${var1: -5}
[root@localhost ~]# echo substr3
substr3
[root@localhost ~]# echo $substr3
educe
[root@localhost ~]# substr3=${var1: -5:4}
[root@localhost ~]# echo $substr3
educ
[root@localhost ~]#

在这里插入图片描述

案例测试

#!/bin/bash

string="Bigdata process framework is Hadoop,Hadoop is an open source project"

function print_tips
{
    echo "***********************"
    echo "1.打印string长度"
    echo "2.删除字符串中的所有Hadoop"
    echo "3.替换第一个Hadoop为Mapreduce"
    echo "4.替换全部的Hadoop为Mapreduce"
    echo "***********************"
}


function len_of_string
{
	echo "${#string}"
}

function del_hadoop
{
	echo "${string//Hadoop/}"
}

function rep_hadoop_first
{
	echo "${string/Hadoop/Mapreduce}"
}

function rep_hadoop_all
{
	echo "${string//Hadoop/Mapreduce}"
}

while true
do
	echo "【string=$string】"
	echo
	print_tips
	read -p "pls input your choice(1,2,3,4,q,Q):" choice
    	case $choice in
		1)
			len_of_string
			;;
		2)
			del_hadoop
			;;
		3)
			rep_hadoop_first
			;;
		4)	
			rep_hadoop_all
			;;
		q|Q)
			exit
			;;
		*)
			echo "Error"
			;;
	esac
done

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人工智能攻克奥数几何难题:AlphaGeometry 接近金牌选手水平

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

PLC物联网网关BL104实现PLC协议转MQTT、OPC UA、Modbus TCP

随着物联网技术的迅猛发展,人们深刻认识到在智能化生产和生活中,实时、可靠、安全的数据传输至关重要。在此背景下,高性能的物联网数据传输解决方案——协议转换网关应运而生,广泛应用于工业自动化和数字化工厂应用环境中。 无缝衔…

更新Ubuntu并同步网络时间

ubuntu环境搭建专栏🔗点击跳转 Ubuntu系统环境搭建(九)——更新Ubuntu并同步网络时间 文章目录 Ubuntu系统环境搭建(九)——更新Ubuntu并同步网络时间1.更新Ubuntu1.1 查看ubuntu版本和详细信息1.2 创建root用户1.3 更…

jS-正则表达式(六)

• 介绍 什么是正则表达式 正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象 使用场景: 1.例如验证表单:用户名表单只能输入英文字母、数字或者下划线&#…

【深度学习每日小知识】NLP 自然语言处理

自然语言处理 (NLP) 是人工智能 (AI) 的一个子领域,处理计算机和人类(自然)语言之间的交互。它涉及使用算法和统计模型使计算机能够理解、解释和生成人类语言。 NLP 是人工智能领域的重要工具,广泛应用于语言翻译、文本分类和聊天…

96.乐理基础-记号篇-装饰音记号(四)回音

内容参考于:三分钟音乐社 上一个内容:95.乐理基础-记号篇-装饰音记号(三)波音-CSDN博客 理解了波音,再看回音会很简单。 回音:分两种类型 1.顺回音,样子如图1 2.逆回音,样子看图5…

(蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)

能够表示为某个整数的平方的数字称为“平方数 虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数。因为平方数的末位只可能是:0,1,4,5,6,9 这 6 个数字中的某个。所以,4325435332 必然不是平方数。 如果给你一个 2 位或 2 位以上的数字&am…

web蓝桥杯真题--12、由文本溢出引发的“不友好体验”

背景介绍 通常情况下,为保证布局的稳定性,以及遵循在有限的空间展示更多内容的原则,页面的某块区域不会随内容的增多而无限增高或增宽,一般会有一个约束。 例如:整体元素过多可以使用滚动条;文字内容过多…

企业级存储使用的SSD磁盘的健康度问题探讨

写在前面,我的主要工作是销售企业级存储系统的备品备件和提供一些额外的增值服务。谈到销售备件,很重要的就是备件质量了。现在SSD磁盘使用越来越广泛,对于SSD磁盘的健康度就是甲方爷爷们非常关心的一个问题。本文就是想梳理一下企业级SSD固态…

【前端设计】card

欢迎来到前端设计专栏&#xff0c;本专栏收藏了一些好看且实用的前端作品&#xff0c;使用简单的html、css语法打造创意有趣的作品&#xff0c;为网站加入更多高级创意的元素。 html <!DOCTYPE html> <html lang"en"> <head><meta charset&quo…

Android 基础技术——View 的宽高

笔者希望做一个系列&#xff0c;整理 Android 基础技术&#xff0c;本章是关于 View 的宽高 Activity Resume 的时候设置或者获取view的宽高是否有效? 回答&#xff1a;不确定。 首次 onResume 无效&#xff0c;二次 onResume 就有效了。 回顾「Android 基础技术——addView 流…

力扣509. 斐波那契数

动态规划 思路&#xff1a; 斐波那契数通式&#xff1a;F(n) F(n - 1) F(n - 2)&#xff1b;以此为状态转移方程&#xff0c;对其进行动态规划&#xff1b;边界条件&#xff1a; F(0) 0F(1) 1使用两个变量来存储上一组结果&#xff1b; class Solution { public:int fib(…

详解Python程序结构

Python是一种简单易学、功能强大的编程语言&#xff0c;它的程序结构简洁清晰&#xff0c;使得开发者能够高效地编写和维护代码。本文将重点介绍Python程序的结构&#xff0c;包括模块、包、函数、类等内容&#xff0c;以帮助初学者更好地了解Python的基本组织形式。 模块是Pyt…

java.lang.IllegalArgumentException: Request header is too largeiseases

问题 笔者使用SpringBoot开发服务端项目&#xff0c;客户端发送请求控制台报错 java.lang.IllegalArgumentException: Request header is too largeiseases详细问题 控制台详细报错如下 2024-01-20 18:44:46.541 INFO 16344 --- [nio-9090-exec-4] o.apache.coyote.http11…

Jmeter 配置元件

Jmeter 配置元件 CSV 数据集配置HTTP Cookie 管理器HTTP Header 信息头管理器增加多个用户案列 使用Jmeter发送请求的时候&#xff0c;需要配置元件&#xff0c;配置请求Header、Cookie、数据集合等。可以模拟多个在线用户登录&#xff0c;修改请求头数据。 CSV 数据集配置 C…

找不到x3daudio1_7.dll怎么解决,六种有效快速x3daudio1_7.dll修复教程分享

一、x3daudio17.dll是什么文件&#xff1f; x3daudio17.dll是一个动态链接库文件&#xff0c;它是Microsoft DirectX中的一部分。DirectX是微软公司开发的一种多媒体编程接口&#xff0c;用于处理音频、视频和图形等多媒体内容。而x3daudio17.dll则是DirectX中的一个组件&…

CMeet系列技术生态沙龙---城市开发者组织年度聚会·杭州 《把握未来趋势,持续学习创新》

CSDN始终致力于促进城市区域内尖端新兴技术开发者交流,提供开放自由的切磋平台。在这个充满挑战和机遇的一年即将结束之际&#xff0c;通过本次聚会&#xff0c;汇聚杭州本地各行各业的开发者朋友&#xff0c;回顾过去一年城市社区的成就和收获&#xff0c;感谢携手同行的各位,…

用Axure RP 9制作弹出框

制作流程 1.准备文本框 下拉列表 按钮 动态面板 如图 2.先把下拉列表放好 再放动态面板覆盖 3.点动态面板 进入界面 如图 4.给按钮添加交互 3个按钮一样的 如图 5.提交按钮添加交互 如图

Python——面向对象

前言 小伙伴们好久不见&#xff0c;本期我们了解一下Python中面向对象的一些基础知识&#xff0c;为以后的上位机学习做下基础&#xff0c;因为前面我们对c语言进行了系统学习&#xff0c;所以Python基础知识我们就不做阐述了&#xff0c;逻辑基本相同&#xff0c;就是书写的格…

Android学习之路(22) ARouter原理解析

1.ARouter认知 首先我们从命名来看:ARouter翻译过来就是一个路由器。 官方定义&#xff1a; 一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦 那么什么是路由呢&#xff1f; 简单理解就是&#xff1a;一个公共平台转发系统 工作方式&…