shell编程学习

news2025/1/12 10:02:44

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

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

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

相关文章

Java研学-spring框架(一)

一 概述 1 介绍 Spring框架是一个开源的Java EE应用程序框架,旨在简化Java企业级应用的开发难度和开发周期,主要通过控制反转(IoC)和面向切面编程(AOP)等技术实现。   容器(Container&#x…

【CVE-2022-22733漏洞复现】

Apache ShardingSphere ElasticJob-UI漏洞 漏洞编号:CVE-2022-22733 文档说明 本文作者:SwBack 创作时间:2024/1/21 19:19:19 知乎:https://www.zhihu.com/people/back-88-87 CSDN:https://blog.csdn.net/qq_30817059 百度搜索: SwBack漏洞描述 Apache ShardingSphere Elast…

Python基础第二篇(Python基础语法)

文章目录 一、字面量二、注释三、变量四、数据类型五、数据类型转换六、标识符七、运算符八、字符串扩展内容(1)字符串定义(2)字符串拼接、(3)字符串格式化(4)字符串格式化的精度控制…

上位机图像处理和嵌入式模块部署(开篇)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 图像处理是现实生活当中很实用的一门技术。工业上一般采用的是机器视觉,以传统算法和光源控制为主,部分采用了深度学习技术…

MySQL的下载、安装、配置、登录,配置(图+文)(超级详细)

一、 软件的下载 1. 下载地址 官网: https://www.mysql.com 2. 打开官网,点击 DOWNLOADS 然后,点击 MySQL Community(GPL) Downloads 3. 点击 MySQL Community Server 4. 在 General Availability(GA) Releases 中选择适合的版本 …

【C语言基础篇】结构控制(下)转向语句break、continue、goto、return

文章目录 一、break语句 1. break在 while 循环中 2. break在 for 循环中 3. break在 do…while 循环中 4. break在 switch 语句中 5. break 总结 二、continue语句 1. continue在 while 循环中 2. continue在 for 循环中 3. continue在 do...while 循环中 4. con…

Kubernetes网络模型概述

Kubernetes网络模型设计的一个基础原则是:每个Pod都拥有一个独立的IP地址,并假定所有Pod都在一个可以直接连通的、扁平的网络空间中。所以不管这些Pod是否运行在同一个Node中,都要求它们可以直接通过对方的IP进行访问。由于Kubernetes的网络模…

C++泛型编程-类模板的项目实战实现基础的Vector的编写

请设计一个数组模板类&#xff08; Vector &#xff09;&#xff0c;完成对 int 、 char 、 float 、 double 以 及任意的自定义类等类型元素进行管理。 需求 a. 实现构造函数 b. 实现拷贝构造函数 c. 实现 cout << 操作 d. 实现下标访问符 [] 的重载操作 …

中仕教育:应届生可以考军队文职吗?有什么要求?

军队文职&#xff0c;涵盖了各个领域&#xff0c;包括行政、管理、人力资源、后勤等工作岗位&#xff0c;作为国家公务员的一种类型&#xff0c;军队文职同样享有稳定的工作和待遇。 虽然军队文职对所有符合条件的人开放&#xff0c;但对于应届生来说&#xff0c;还需满足以下…

企业Oracle1 数据库管理

Oracle的安装 一、基础表的创建 1.1 切换到scott用户 用sys 账户 登录 解锁scott账户 alter user scott account unlock;conn scott/tiger;发现并不存在scott账户&#xff0c;自己创建一个&#xff1f; 查找资料后发现&#xff0c;scott用户的脚本需要自己执行一下 C:\ap…

Spring:StopWatch

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、输出总耗时 二、输出所有任务的耗时和占比 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、输出总耗时 public void stopWatc…

【web 编程技术】基于 B/S 架构的电商平台(java web)

基于 B/S 架构的电商平台&#xff08;java web&#xff09; 课程设计实验目的课程设计实验环境课程设计功能概述课程设计需求分析三层架构图功能列表系统用例图系统活动图-用户端需求分析 课程设计详细设计实现过程数据库BaseServlet 的实现商品显示模块-分页显示所有商品、查看…

【网站项目】基于SSM的274办公自动化管理系统

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

安全防御-基础认知

目录 安全风险能见度不足&#xff1a; 常见的网络安全术语 &#xff1a; 常见安全风险 网络的基本攻击模式&#xff1a; 病毒分类&#xff1a; 病毒的特征&#xff1a; 常见病毒&#xff1a; 信息安全的五要素&#xff1a; 信息安全的五要素案例 网络空间&#xff1a…

flutter项目怎么判断是不是web平台?Unsupported operation: Platform._operatingSystem

如果你使用Platform 这个工具来判断的时候&#xff0c;很有可能会报错&#xff1a; Exception caught by widgets library The following UnsupportedError was thrown building MyApp(dirty): Unsupported operation: Platform._operatingSystem The relevant error-causin…

关于索引的最常见的十道面试题

面试题一&#xff1a;索引底层如何实现的&#xff1f; MySQL索引的底层实现是取决于存储引擎的&#xff0c;但是是大部分存储引擎底层都是通过B树实现的&#xff0c;以默认的存储InnoDB为例&#xff0c;底层就是通过B树实现的&#xff0c;如下图所示&#xff1a; B树是一种自平…

为什么C++17要引入std::string_view?

目录 1.引言 2.原理分析 2.1.结构 2.2.构造函数 2.3.成员函数 2.4.std::string_view字面量 3.实例 3.1.std::string_view和std::string的运算符操作 3.2.查找函数使用 3.3.std::string_view和临时字符串 4.总结 1.引言 在C/C日常编程中&#xff0c;我们常进行数据的…

elastic search入门

参考1&#xff1a;Elastic Search 入门 - 知乎 参考2&#xff1a;Ubuntu上安装ElasticSearch_ubuntu elasticsearch-CSDN博客 1、ElasticSearch安装 1.1安装JDK&#xff0c;省略&#xff0c;之前已安装过 1.2创建ES用户 创建用户&#xff1a;sudo useradd esuser 设置密码&…

多线程编程1

一、线程的引入 上节&#xff0c;我们介绍了进程的概念&#xff0c;以及操作系统内核是如何管理进程的&#xff08;描述组织&#xff09;&#xff0c;PCB中的核心属性有哪些&#xff0c; 引入进程这个概念&#xff0c;最主要的目的&#xff0c;就是为了解决“并发编程”这样的…

机器学习周记(第二十六周:文献阅读-DPGCN)2024.1.15~2024.1.21

目录 摘要 ABSTRACT 1 论文信息 1.1 论文标题 1.2 论文摘要 1.3 论文背景 2 论文模型 2.1 问题描述 2.2 论文模型 2.2.1 时间感知离散图结构估计&#xff08;Time-aware Discrete Graph Structure Estimation Module&#xff0c;TADG Module&#xff09; 2.2.2 时间…