第二章 Shell字符串处理之${}

上一章节讲解了为什么用${}引用变量,${}还有一个重要的功能,就是文本处理,单行文本基本上可以满足你所有需求。

3.1 获取字符串长度

# VAR=‘hello world!‘
# echo $VAR
hello world!
# echo ${#VAR}
12

3.2 字符串切片

截取hello字符串:
# VAR=‘hello world!‘
# echo ${VAR:0:5}
hello
截取world字符串:
# echo ${VAR:5:-1}
world
截取最后一个字符:
# echo ${VAR:(-1)}
!

3.3 替换字符串

# VAR=‘hello world world!‘
将第一个world字符串替换为WORLD:
# echo ${VAR/world/WORLD}
hello WORLD world!
将全部world字符串替换为WORLD:
# echo ${VAR//world/WORLD}
hello WORLD WORLD!

3.4 字符串截取

# URL="
 
以//为分隔符截取右边字符串:
# echo ${URL#*//}         
www.baidu.com/baike/user.html
以/为分隔符截取右边字符串:
# echo ${URL##*/}
user.html
以//为分隔符截取左边字符串:
# echo ${URL%%//*}     
http:
以/为分隔符截取左边字符串:
# echo ${URL%/*}
http://www.baidu.com/baike
以.为分隔符截取左边:
# echo ${URL%.*}
http://www.baidu.com/baike/user
以.为分隔符截取右边:
# echo ${URL##*.}
html

# 去掉左边,从左边匹配第一个,##从右边匹配第一个。

% 去掉右边,从右边匹配第一个,%%从左边匹配第一个。

有*号情况下才这样。

3.5 变量状态赋值

${VAR:-string}  如果VAR变量为空则返回string

${VAR:+string}  如果VAR变量不为空则返回string

${VAR:=string}  如果VAR变量为空则重新赋值VAR变量值为string

${VAR:?string}  如果VAR变量为空则将string输出到stderr

如果变量为空就返回hello world!:
# VAR=
# echo ${VAR:-‘hello world!‘}
hello world!
如果变量不为空就返回hello world!:
# VAR="hello"
[[email protected] ~]# echo ${VAR:+‘hello world!‘}
hello world!
如果变量为空就重新赋值:
# VAR=
# echo ${VAR:=hello}
hello
# echo $VAR
hello
如果变量为空就将信息输出stderr:
# VAR=
# echo ${VAR:?value is null}   
-bash: VAR: value is null

${}主要用途大概就这么多了,另外还可以获取数组元素,在后面章节会讲到。

博客地址:http://lizhenliang.blog.51cto.com

QQ群:Shell/Python运维开发群 323779636

再介绍下字符串输出颜色,有时候关键地方需要醒目,颜色是最好的方式:


字体颜色


字体背景颜色


显示方式


30:黑

31:红

32:绿

33:黄

34:蓝色

35:紫色

36:深绿

37:白色


40:黑

41:深红

42:绿

43:黄色

44:蓝色

45:紫色

46:深绿

47:白色


0:终端默认设置

1:高亮显示

4:下划线

5:闪烁

7:反白显示

8:隐藏

格式:

\033[1;31;40m  # 1是显示方式,可选。31是字体颜色。40m是字体背景颜色。

\033[0m     # 恢复终端默认颜色,即取消颜色设置。

示例:

#!/bin/bash
# 字体颜色
for i in {31..37}; do
    echo -e "\033[$i;40mHello world!\033[0m"
done
# 背景颜色
for i in {41..47}; do
    echo -e "\033[47;${i}mHello world!\033[0m"
done
# 显示方式
for i in {1..8}; do
    echo -e "\033[$i;31;40mHello world!\033[0m"
done

时间: 2024-10-10 17:57:01

第二章 Shell字符串处理之${}的相关文章

第二章 Shell 字符串处理之${}

原文地址:https://www.cnblogs.com/ApolloZ/p/11604482.html

第二章 Shell变量

第二章 Shell变量 1. shell变量概述 1. 什么是变量 变量是Shell传递数据的一种方法,简单理解:用一个固定的字符串去表示不固定的内容,便于后续引用. 2.变量命令规范 变量定义时名称有要求:字母.数字.下划线几个组成,尽量字母开头,变量名最好具备一定的含义. ip=10.0.0.100 ip1=10.0.0.100 Hostname_Ip=10.0.0.100 hostname_IP=10.0.0.100 等号是赋值,需要注意:等号两边不能有空格,其次定义的变量不要与系统命令出

Shell编程从入门到精通-第二章.shell变量

二.Shell变量 2.1.什么是变量 在小学的时候我们学过数学方程式,例如:已知x=1,y=x+1那么y等于多少 在上述的题目中x和y被称为未知数,但是在shell编程里它们是变量名,等号右边的1和x+1是变量的内容,(这里"="被称为赋值) 通过上面的介绍可以得出,变量就是用一个固定的字符串代替更多,更复杂的内容,该内容包含变量.路径.字符串等其他的内容,变量是暂时存储数据的地方和标记,所存储的数据存在内存空间中,通过调用内容空间的变量名字就可以取出变量对应的数据.使用变量最大的好

第二章 Shell变量定义

1. Shell变量概述 1. 什么是变量 变量是Shell传递数据的一种方法,简单理解:用一个固定的字符串去表示不固定的内容,便于后续引用. 2.变量命令规范 变量定义时名称有要求:字母.数字.下划线几个组成,尽量字母开头,变量名最好具备一定的含义. ip=10.0.0.100 ip1=10.0.0.100 Hostname_Ip=10.0.0.100 hostname_IP=10.0.0.100 等号是赋值,需要注意:等号两边不能有空格,其次定义的变量不要与系统命令出现冲突. 3. Shel

第二章 Shell编程之变量

Shell编程之变量 一 Bash变量与变量分类 Bash是Linux中的标准Shell,因此经常称Bash为Shell. 1. 变量命名规则 变量名可以由字母.数字.下划线组成,但必须以字母与下划线开头: 变量名的长度不能超过255个字符: 变量名在有效范围必须唯一: 在Bash中,变量的默认类型都字符串型: 2. 变量按照存储类型分类 默认类型是字符串型. 字符串型,赋值时单双引号皆可: 整形: 浮点型: 日期型: 二 用户自定义变量 变量名与变量值都是用户自定义的,就是说可以由用户控制修改

《跟老男孩学Linux运维之shell编程实战》-第二章 shell变量的核心基础

这篇文章主要讲解 shell变量的核心基础. 1.变量是什么? 变量是什么?可能有好多人不明白,简单地说,变量就是用一个固定的字符串(也可能是字符.数字等的组合)代替更多.更复杂的内容,该内容里可能还会包含变量.路径.字符串等其他的内容. 变量的赋值方式为:先写变量名称,紧接着是"="这个字符,最后是值,中间无任何空格(变量的内容一般要加双引号,以防止出错,特别是当值里的内容之间有空格时). 如何打印变量?通过echo命令加上$变量名 打印变量的值: 例如:定义变量和打印变量: [[e

第二章 Python字符串和编码

2.1 字符串     2.1.1 字符串转换    >>> a = 123        >>> b = 1.23    >>> type(a)    <type 'int'>    >>> type(b)    <type 'float'>    >>> type(str(a))    <type 'str'>    >>> type(str(b))    &

第二章 shell编程基础

2.1.1 shell脚本的参数 常用参数 (1) *  以一个字符串显示所向脚本传递的参数,与位置变量不同,此参数可超过9个 (2) @ 从参数1开始,显示所有向脚本传递的参数,和上边的*相似,下面会介绍区别 (3) # 参数数量,不包含参数0 (4) $ 脚本运行的当前ID号 (5) ! 后台运行的最后一个ID号 (6) ? 显示最后命令的退出状态,0表示没有错误,其他任何值表明有错误 (7) - 显示shell使用的当前选项,与set命令功能相同 注:① * 和 @ 的区别在于,当加上双引

[第二章]Shell 变量

一.变量 变量就是使用一个较简单的字符串来代替某些具有特殊意义的设定以及数据.就拿PATH来说,这个PATH就代替了所有常用命令的绝对路径的设定,有了PATH这个变量,我们运行某个命令时就不再需要输入全局路径,直接输入命令名即可. [[email protected] ~]# echo $PATH <==输出PATH变量 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [[email protected