美文网首页
Shell字符串常用操作

Shell字符串常用操作

作者: tom__zhu | 来源:发表于2020-04-01 12:19 被阅读0次

Shell中只有数字和字符串类型,所以字符串是经常使用的数据类型。
字符串可以由单引号 或者 " " 包围,也可以不被包围。

# 字符串举例
STR=com.baidu.www
STR="com.baidu.www"
STR='com.baidu.www'

这三种形式的区别如下:

  1. 单引号包围
  • 被包围的字符串都是字面量,被包围的变量无法取值。
  • 字符串中不能包含',即使对其转义也无效。
  1. "双引号包围
  • 被包围的字符串会被正确解析,被包围的变量可以取值。
  • 字符串可以包含双引号,但是需要转义。
  1. 没有被包围
  • 没有包围的变量可以取值,如果变量为空解析结果也是空。
  • 字符串不能出现空格,空格会被认为是字符串截止。


字符串拼接

在shell中不需要使用符号拼接字符串,将做个字符串放在一起就能实现拼接。

FILENAME=text.txt
PATH=${HOME}/Desktop/${FILENAME}

# 字符串中间不能有空格
echo $FILENAME$PATH
# 字符串中间可以有空格
echo "$FILE $NAME"
# 变量名外面的花括号{ }是可选的,是为了帮助解释器识别变量边界
echo "${FILE}${NAME}"
# 字符串中间夹着别的字符串
echo $FILENAME" "$PATH

获取字符串长度

#! /bin/bash

STR=com.baidu.www
echo ${#STR}


多样式字符串

echo可以输出彩色、粗体等样式字符串,在某些场景下会增加输出易读性。通过 转义序列(escape sequences) 使得在命令行中可以输出彩色与格式化的字符,这些字符需要被转义符包围(通常由[表示)。
在Bash中Esc字符通常可以表示为

  • \e
  • \033
  • \x1B

举个🌰:

  • echo -e "\e[31mHello World\e[0m"


  • echo -e "\033[31mHello\e[0m World"

简单解释一下语法

  • \033[43;36 是一个整体,43表示背景颜色, 36表示字符串颜色
  • -\033 表示转义的开始, \033本身代买Esc符号可以用\e\E替换
  • 背景色与字符串颜色各由一个数字表示,并且他们的数值空间不一样
  • m 表示专业终止符
  • \033[0m 表示将颜色恢复为原来的样式
    [图片上传中...(image-c88bf8-1586186516142)]
Background Foreground(content)

获取字符串对比

=~:正则匹配,用来判断其左侧的参数是否符合右边的要求

#!/bin/bash
#条件表达式
declare A
#判断变量A是否set
[[ -v A ]] && echo "var A is set" || echo "var A is unset"
#判断变量A的值是否为空
[ ! $A ] && echo false || echo true
test -z $A && echo "var A is empty"
#通配与正则
A="1234567890abcdeABCDE"
B='[0-9]*'
C='[0-9]{10}\w+'
[[ $A = $B ]] && echo '变量A匹配通配符[0-9]*' || echo '变量A不匹配通配符[0-9]*'
[ $A == $B ] && echo '[ expr ]中能够使用通配符' || echo '[ expr ]中不能使用通配符'
[[ $A =~ $C ]] && echo '变量A匹配正则[0-9]{10}\w+' || echo '变量A不匹配正则[0-9]{10}\w+'

reference
Bash tips: Colors and formatting (ANSI/VT100 Control sequences)

相关文章

网友评论

      本文标题:Shell字符串常用操作

      本文链接:https://www.haomeiwen.com/subject/lgjguhtx.html