【linux】shell 编程之字符串与数组

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 【linux】shell 编程之字符串与数组,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

前言

对字符串的操作在众多的编程语言中可以说是最基础的了,字符串(String)就是一系列字符的组合。字符串是 Shell 编程中最常用的数据类型之一(除了数字和字符串,也没有其他类型了)。

一、shell 中字符串的几种格式

在shell中,字符串主要有下面几类写法:

  1. 单引号方式

  2. 双引号方式, 推荐

  3. 不用引号方式

【linux】shell 编程之字符串与数组

三种写法的区别

1、使用单引号 '' 的字符串:

任何字符都会原样输出,在其中使用变量是无效的。

【linux】shell 编程之字符串与数组

2、由双引号" "包围的字符串:

1)其中包含了变量,那么该变量会被解析得到值,而不是原样输出;

2)字符串中还可以出现双引号的子字符串,但是需要转义;

【linux】shell 编程之字符串与数组

3、不被引号包围的字符串

1)不被引号包围的字符串中出现变量时也会被解析,这一点和双引号" "包围的字符串一样;

2)字符串中不能出现空格,否则空格后边的字符串会作为其他变量或者命令解析;

【linux】shell 编程之字符串与数组

二、字符串常用操作

1、获取字符串长度

${#字符串变量名}

【linux】shell 编程之字符串与数组

2、字符串拼接

几种常用的拼接方式:

  1. 无符号拼接

  2. 双引号拼接

  3. 混合拼接

无符号拼接

【linux】shell 编程之字符串与数组

双引号拼接

【linux】shell 编程之字符串与数组

混合拼接

【linux】shell 编程之字符串与数组

3、字符串截取

字符串截取操作在众多的编程语言中可以说是非常常见的一种操作了,尤其是在python语言中,使用非常高频,而在shell中,也提供了毕竟丰富的字符串截取的操作;

格式 说明
${变量名:start:length} 从 string 字符串的左边第 start 个字符开始, 向右截取 length 个字符。
${变量名:start} 从 string 字符串的左边第 start 个字符开始截取,直到最后。
${变量名:0-start:length} 从 string 字符串的右边第 start 个字符开始, 向右截取 length 个字符。
${变量名:0-start} 从 string 字符串的右边第 start 个字符开始截取,直到最后。
${变量名#*chars} 从 string 字符串第一次出现 *chars 的位置开始, 截取 *chars 右边的所有字符。
${变量名##*chars} 从 string 字符串最后一次出现 *chars 的位置开始, 截取 *chars 右边的所有字符。
${变量名%chars*} 从 string 字符串最后第一次出现 chars* 的位置开始, 截取 chars* 左边的所有字符。
${变量名%%chars*} 从 string 字符串第一次出现 chars* 的位置开始, 截取 chars* 左边的所有字符

下面随机演示几个截取的操作命令

【linux】shell 编程之字符串与数组

 【linux】shell 编程之字符串与数组

三、数组

Shell 支持数组(Array), 数组是若干数据的集合,其中的每一份数据都称为数组的元素。

注意Bash Shell 只支持一维数组,不支持多维数组

1、数组语法

在 Shell 中,用括号( )来表示数组,数组元素之间用空格来分隔. 语法为

array_name=(item1  item2 …)          # 方式1
array_name=([索引下标1]=item1  [索引下标2]=item2  …)          # 方式2

注意,赋值号 = 两边不能有空格

2、数组定义

使用小括号定义一组数字

num1=(1 2 3 4 5)

【linux】shell 编程之字符串与数组

数组中可以存在不同类型的元素

num1=(1 2 3 4 “hello”)

【linux】shell 编程之字符串与数组

 Shell数组元素定义后不是固定的, 定义后还可以赋值

arr[6]=100

也可以给指定元素赋值初始化

arr2=([0]=1 [2]=100 [4]=aa)

3、数组中值的获取

1.通过下标获取元素值,index从0开始

${arr[index]}

【linux】shell 编程之字符串与数组

2、获取值同时复制给其他变量

item=${arr[index]}

【linux】shell 编程之字符串与数组

3、使用 @* 可获取数组中的所有元素

${arr[@]}
${arr[*]}

【linux】shell 编程之字符串与数组

4.获取数组的长度或个数

${#arr[@]}
${#arr[*]}

【linux】shell 编程之字符串与数组

5.获取数组指定元素的字符长度

${#arr[索引]}

【linux】shell 编程之字符串与数组

4、数组的拼接

所谓 Shell 的数组拼接(数组合并),就是将两个数组连接成一个数组

语法

使用 @* 获取数组所有元素之后进行拼接:

array_new=(${array1[@]} ${array2[@]} …)
array_new=(${array1[*]} ${array2[*]} …)

案例展示

【linux】shell 编程之字符串与数组

5、数组的删除

删除数组指定元素数据

unset array_name[index]

删除整个数组

unset array_name

案例展示:删除num1 中的第一个元素

【linux】shell 编程之字符串与数组

案例展示:删除num1这个数组

【linux】shell 编程之字符串与数组

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/143222.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!