shell中字符串的操作,和shell中数组的操作

获取长度

root@ubuntu:/home/test/Desktop# a="hello world"
root@ubuntu:/home/test/Desktop# echo ${#a}
11

字符串切片

${parameter:offset} 偏移量
$(parameter:offset:length} 偏移量:长度
root@ubuntu:/home/test/Desktop# echo ${a:1:2}
el

截取最后一个字符

root@ubuntu:/home/test/Desktop# echo ${a:(-1)}
d

字符串替换

不改变原有的变量

root@ubuntu:/home/test/Desktop# echo ${a/hello/HELLO}
HELLO world
root@ubuntu:/home/test/Desktop# echo ${a/h/H}
Hello hello world
root@ubuntu:/home/test/Desktop# echo ${a//h/H}
Hello Hello world
root@ubuntu:/home/test/Desktop# echo ${a//[a-l]/8}
8888o 8888o wor88
You have new mail in /var/mail/root
root@ubuntu:/home/test/Desktop# echo ${a/[a-l]/8}
8ello hello world

第一个分隔符如果是“/”,就替换1个。
如果是“//”,就替换所有
支持正则表达式

字符串截取

${parameter#world}
${parameter##world}
${parameter%world}
${parameter%%world}
支持正则,删除匹配到的文档
#是左边 ,##是长匹配
%是右边,%%是长匹配

root@ubuntu:/home/test/Desktop# echo ${a%/*}
http://www.baidu.com/baike
root@ubuntu:/home/test/Desktop# echo ${a%%/*}
http:

变量状态赋值

echo ${var:-string}是空返回string
echo ${var:+string}不是空返回string
echo ${var:=string}是空赋值var=string
echo ${var:?string}如果是空将string输出到stderr

root@ubuntu:/home/test/Desktop# echo $aroot@ubuntu:/home/test/Desktop# echo ${a:-"kong"}
kong
root@ubuntu:/home/test/Desktop# echo $aroot@ubuntu:/home/test/Desktop# echo ${a:+"kong"}You have new mail in /var/mail/root
root@ubuntu:/home/test/Desktop# 
root@ubuntu:/home/test/Desktop# echo ${a:="kong"}
kong
You have new mail in /var/mail/root
root@ubuntu:/home/test/Desktop# echo $a
kong
root@ubuntu:/home/test/Desktop# a=
root@ubuntu:/home/test/Desktop# echo ${a:?"error"}
bash: a: error
root@ubuntu:/home/test/Desktop# 

字符串颜色

字体颜色:从30-37
字体背景颜色:40-47
显示方式:0-8

for i in {31..37} 
do 
echo -e "\033[$i;40mHello\033[0m"# 格式 \033["字体颜色编号";"背景颜色编号""内容"\033[0m.后面的033[0m是恢复默认。done

数组的操作

数组的操作和元组很容易混乱
数组的格式:
arrary=(1 2 3)
使用空格分开
arrary=(a b c)
新建并添加元素

root@ubuntu:/home/test/Desktop# a=("a" "b" "c" "d")
root@ubuntu:/home/test/Desktop# echo ${a[@]}
a b c d
root@ubuntu:/home/test/Desktop# echo ${#a[@]}
4
root@ubuntu:/home/test/Desktop# echo ${#a[*]}
4
root@ubuntu:/home/test/Desktop# echo ${!a[*]}
0 1 2 3
root@ubuntu:/home/test/Desktop# echo ${!a[@]}
0 1 2 3
通过获取已有元素的个数来判定元素的位置,根据位置打印元素。前提是不知道元素的长度
a=("a" "b" "c" "d")
for i in ${!a[*]}; doif (( $i == 2));thenbreakfi
echo $i
echo ${a[${i}]};
#echo ${a[i]}
done
root@ubuntu:/home/test/Desktop# a[4]=5root@ubuntu:/home/test/Desktop# echo ${a[*]}
a b c d 5
root@ubuntu:/home/test/Desktop# a+=(1 2 3)
You have new mail in /var/mail/root
root@ubuntu:/home/test/Desktop# echo ${a[*]}
a b c d 5 1 2 3

如果添加多个数组,只能使用
a+=(1 2 3)

释放和删除数组:

root@ubuntu:/home/test/Desktop# echo ${a[*]}
a b c d 5 1 2 3

多次执行删除a[0],只能删除1个。因为元素的下标并没有自动更新

root@ubuntu:/home/test/Desktop# unset a[0]
root@ubuntu:/home/test/Desktop# unset a[0]
root@ubuntu:/home/test/Desktop# unset a[0]
root@ubuntu:/home/test/Desktop# echo ${a[*]}
b c d 5 1 2 3
root@ubuntu:/home/test/Desktop# echo ${!a[*]}
1 2 3 4 5 6 7

删除整个,就用unset{a}

root@ubuntu:/home/test/Desktop# unset a
You have new mail in /var/mail/root
root@ubuntu:/home/test/Desktop# echo ${a[*]}root@ubuntu:/home/test/Desktop# 

关于linux中的数组,有哪些产生数据的命令
可以使用{}或者seq都可以产生遍历序列

#for i in $(seq 0 2 100);do
#  echo $i
#  done
for i in {1..100}; doecho "$i"done

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

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

相关文章

C#知识点-17(正则表达式)

正则表达式 概念:正则表达式是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现 元字符: 1、.:匹配除\n之外的任何单个字符。例如正则表达式“b.g”能匹配如下字符串:“big”、“bug”、“…

MySQL 窗口函数温故知新

本文用于复习数据库窗口函数,希望能够温故知新,也希望读到这篇文章的有所收获。 本文以:MySQL为例 参考文档: https://www.begtut.com/mysql/mysql-window-functions.html 使用的样例数据:https://www.begtut.com/m…

对象池模式-Object Pool Pattern

原文地址:https://jaune162.blog/design-pattern/object-pool-pattern/ 原文中可下载高清SVG矢量类图 引言 对象池模式(Object Pool Pattern)是一种创建一组可重用对象的设计模式。它通过维护一个预分配的对象集合,避免了频繁地创建和销毁对象所带来的性能开销。在需要使用…

力扣_字符串11—实现前缀树(字典树、Trie树)

题目 方法 对于每一个节点&#xff0c;初始化一个长度为26的数组&#xff0c;用来存储对应字母子节点的地址对于每一个节点&#xff0c;初始化一个 b o o l bool bool 变量用来表示是否为叶子节点 代码 class Trie { private:vector<Trie*> children vector<Trie…

LeetCode //C - 901. Online Stock Span

901. Online Stock Span Design an algorithm that collects daily price quotes for some stock and returns the span of that stock’s price for the current day. The span of the stock’s price in one day is the maximum number of consecutive days (starting from…

ESP8266智能家居(1)——开发环境的搭建

1.前期介绍 本次打算使用esp8266的开发板——NodeMCU&#xff0c;进行物联网相关项目的学习。开发环境使用Arduino软件。 NodeMCU实物图为&#xff1a; 开发环境截图为&#xff1a; 2.软件下载 我使用的arduino版本为1.8.5&#xff0c;其安装包如下&#xff1a; 【免费】ar…

vue3 #跨组件通信

//爷爷组件中 import { provide , ref } from vue const money ref (100) //定义数据 provide( money , money ) //提供数据给孙子组件 const changeMoney ( m:number ) > { //定义函数 if (money) { money.value money.value - m } } provide(&quo…

Python系列(19)—— 条件语句

一、条件语句的基本概念 条件语句&#xff0c;也称为选择语句&#xff0c;允许程序根据条件的结果来执行不同的代码块。Python中最常用的条件语句是if语句&#xff0c;其基本语法如下&#xff1a; if condition:# 当条件为真时执行的代码块如果条件为真&#xff08;即非零或非…

学习总结22

解题思路 简单模拟。 代码 #include <bits/stdc.h> using namespace std; long long g[2000000]; long long n; int main() {long long x,y,z,sum0,k0;scanf("%lld",&n);for(x1;x<n;x)scanf("%lld",&g[x]);for(x1;x<n;x){scanf(&qu…

GEE必须会教程—时间都去哪了(Date参数类型)

时间和空间是世界存在的两种基本属性&#xff0c;大部分的数据都有特有的通道存储时间信息&#xff0c;用户需要通过获取数据存储的信息&#xff0c;来判断数据的可用性&#xff0c;以及数据在时间上发生的变化。在遥感上&#xff0c;空间数据集合中&#xff0c;时间信息显得更…

django配置视图并与模版进行数据交互

目录 安装django 创建一个django项目 项目结构 创建视图层views.py 写入视图函数 创建对应视图的路由 创建模版层 配置项目中的模版路径 创建模版html文件 启动项目 浏览器访问结果 安装django pip install django 创建一个django项目 这里最好用命令行完成&#xf…

SQL注入之DNSLog外带注入

一、认识&#xff1a; 什么是dnslog呢&#xff1f; DNS就是域名解析服务&#xff0c;把一个域名转换成对应的IP地址&#xff0c;转换完成之后&#xff0c;DNS服务器就会有一个日志记录本次转换的时间、域名、域名对应的ip、请求方的一些信息&#xff0c;这个日志就叫DNSLog。…

汉诺塔问题—java详解(附源码)

来源及应用 相传在古印度圣庙中&#xff0c;有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上&#xff0c;有三根杆(编号A、B、C)&#xff0c;在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标&#xff1a;把A杆上的金盘全部移到C杆上&#xff0c;并仍…

【Nacos】构建云原生应用的动态服务发现、配置管理和服务管理平台【企业级生产环境集群搭建应用】

基础描述 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和…

猫头虎分享已解决Bug || Spring Error: Request method ‘POST‘ not supported

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

海思3559 yolov5 wk模型部署笔记

文章目录 安装3559工具链编译opencv编译项目总结 安装3559工具链 将3559工具链copy到虚拟机上&#xff0c;并解压得到安装包 解压&#xff1a; tar -zxvf aarch64-himix100-linux.tgz解压后会得到安装包文件夹&#xff1a; 安装工具链&#xff1a; sudo ./aarch64-himix100…

代码随想录算法训练营第17天—二叉树06 | ● *654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● *98.验证二叉搜索树

*654.最大二叉树 题目链接/文章讲解&#xff1a;https://programmercarl.com/0654.%E6%9C%80%E5%A4%A7%E4%BA%8C%E5%8F%89%E6%A0%91.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1MG411G7ox 考点 前序遍历构建二叉树 我的思路 参考了力扣题目里的提示递归三要…

【大数据面试题】008 谈一谈 Flink资源如何配置

【大数据面试题】008 谈一谈 Flink 资源如何配置 并行度 Parallelism 概念作用Slot 概念作用如何设置TaskManager 任务管理器Flink submit 脚本 一步一个脚印&#xff0c;一天一道面试题 该文章有较多引用文章 https://zhuanlan.zhihu.com/p/572170629?utm_id0 并行度 Paralle…

Unity2023.1.19没有PBR Graph?

Unity2023.1.19没有PBR Graph? 关于Unity2023.1.19没有PBR graph的说法,我没看见管方给出的答案,百度则提到了Unity2020版之后Shader Graph的“全新更新”,之前也没太注意版本的区别,以后项目尽量都留心一下。 之前文章说过,孪生智慧项目推荐使用URP渲染管线,以上的截…

安装sklearn遇到ImportError: dlopen: cannot load any more object with static TLS

1.看https://blog.csdn.net/Go_ahead_forever/article/details/133755918 知不能 pip install sklearn&#xff0c;而是 pip install scikit-learn2.网上说调换import的顺序就能解决。 但是我不知道调换哪个&#xff0c;索性重新开了anaconda环境&#xff0c;一个个安装缺什么…