bash的变量中存放的字符串的处理方式

bash变量:

弱变量:

1.无需实现定义即可应用;

2.变量没有数据类型的硬性要求,默认是字符型;

1.字符串切片:

${#VAR}:返回字符型变量的变量值长度;

${VAR:offset}:返回字符型变量中第“offset”位置之后的内容,不包括第“offset”位置的字符:

offset取值范围:0-$[${#VAR-1}]

${VAR:offset:number}:返回字符型变量中从第“offset”个字符后开始长度为“number”的字符部分;

${VAR:-length}:取字符型变量字符串最右侧的“length”个字符;

注意:在“length”之前要留有空格;

2.基于模式(PATTERN)取字符串:

${VAR*PATTERN}:自左而右,查找VAR变量所存储的字符串中,第一次被PATTERN匹配的字符,

删除从字符串开始到第一个被PATTERN匹配到的字符之间的所有字符;

${VAR##*PATTERN}:自左而右,查找VAR变量所存储的字符串中,第一次被PATTERN匹配的字符,

删除从字符串开始到最后一个被PATTERN匹配到的字符之间的所有字符;

${VAR%PATTERN*}:自右而左,查找VAR变量所存储的字符串中,第一次被PATTERN匹配的字符,

删除从字符串开始到第一个被PATTERN匹配到的字符之间的所有字符;

${VAR%%PATTERN*}:自右而左,查找VAR变量所存储的字符串中,所有被PATTERN匹配的字符,

删除从字符串结尾到最后一个被PATTERN匹配到的字符之间的所有字符;

3.查找替换:

${VAR/PATTERN/SUBSTRING}:在VAR变量中,自左而右查找能够被PATTERN匹配的内容,将其中第一个匹配到的结果更换成SUBSTRING;

${VAR//PATTERN/SUBSTRING}:在VAR变量中,自左而右查找能够被PATTERN匹配的内容,将所有被PATTERN匹配到的结果更换成SUBSTRING;

${VAR/#PATTERN/SUBSTRING}:在VAR变量中查找行首匹配PATTERN的内容,将匹配的结果更换成SUBSTRING;

${VAR/%PATTERN/SUBSTRING}:在VAR变量中查找行尾匹配PATTERN的内容,将匹配的结果更换成SUBSTRING;

4.查找删除:

${VAR/PATTERN}:在VAR变量中,自左而右查找能够被PATTERN匹配的内容,将其中第一个匹配到的结果删除;

${VAR//PATTERN}:在VAR变量中,自左而右查找能够被PATTERN匹配的内容,将其中所有匹配到的结果删除;

${VAR/#PATTERN}:在VAR变量中查找行首匹配PATTERN的内容,将匹配的结果删除;

${VAR/%PATTERN}:在VAR变量中查找行尾匹配PATTERN的内容,将匹配的结果删除;

5.字符串的大小写转换:

${VAR^^}:将VAR变量中的所有的小写字母转换成大写字母;

${VAR,,}:将VAR变量中的所有的大写字母转换成小写字母;

6.变量赋值:

${VAR:-value}:如果变量VAR为空值或者变量未被定义,那么直接返回value中的值;否则返回变量VAR的值;

${VAR:+value}:如果变量VAR已经定义且不为空,则返回value的值;

${VAR:=value}:如果变量VAR为空值或者变量未被定义,那么直接返回value中的值,并且将value的值赋给变量VAR;否则返回变量VAR的值;

7.变量的间接引用:

如果第一个变量的值恰好是第二个变量的变量名,从第一个变量引用第二个变量的值的方法,就称为变量的间接引用,也称为间接变量引用;

如:VAR1=VAR2, VAR2=hellolink

bash提供了这样的间接变量引用的方法:

eval MYVAR=\$$VAR1

时间: 2024-08-03 01:29:27

bash的变量中存放的字符串的处理方式的相关文章

其他文本处理命令以及bash变量中的一些字符串的处理方法

其他的文本处理命令: 1.wc 2.cut命令: cut - 在文件的每一行中提取片断 注意:能够被cut修剪的文件或数据内容,一般是具有某种特定格式或结构的文本文件或数据内容: 如 :/etc/passwd 格式:cut [OPTION]... [FILE]... 常用选项: -d, --delimiter=DELIM:指定在实施修剪操作时所使用的字段分隔符号,默认是TAB(空白字符): -f, --fields=LIST:根据指定的字段分隔符号来指定要保留的字段编号列表: LIST可以称为字

#8 bash变量中的字符串处理

一个完整的程序,一般包括4类文件: 二进制文件(可执行文件).头和库文件.帮助文件.配置文件: bash--CLI(命令行接口)的一种 bash同样属于完整的应用程序,也有这四类文件: bash的配置文件: 三类: profile类: 为交互式登录的shell进程实现功能初始化的配置文件: bashrc类: 为非交互式登录的shell进程实现功能启动配置的配置文件: logout类: 为交互式登录的shell进程提供终止及清理类功能的配置文件: shell的类型: 交互式登录的shell: 1.

bash变量中字符串的操作

1.字符串的切片 ${#VAR}:返回字符类型变量的变量值的长度 ${VAR:offset}:返回字符型变量中第"offset"位置之后的内容,不包括第offset位,offset取值范围为:0-$[$[#VAR]-1] ${VAR:offset:number}:返回字符型变量中第"offset"个字符后开始长度为number的字符部分 ${VAR: -lenth}:取字符型变量字符串最右侧的"length"个字符(注意空格) 示例: 2.基于模

Bash 是如何从环境变量中导入函数的

在上文中曾说到: 所谓的环境变量的真实面目其实就是个任意字符串 Bash 在启动时会将 environ 数组中包含 = 号的字符串导入成为自己的变量 Bash 在启动外部命令时会将自己内部标记为环境变量的变量重组成字符串数组赋值给 environ 本文中继续深入讲三点: environ 数组中可能存在 = 左边名字相同的元素,也就是同名的环境变量,Bash 是怎么导入的? Bash 还可以从环境变量中导入函数,甚至同时导入两个同名的变量和函数 Bash 还可以同时导出两个同名的变量和函数 如果有

字符串变量中转义符的替换方法

1.通常直接写的字符串中有转义符是前面加[@]就能解决: 如:string str = @"请确认数据有误!\r\n中断程序运行."; 这时实际存入str中的内容是"请确认数据有误!\\r\\n中断程序运行." 2.如果字符串变量中的内容中有直接携带了转义符给怎么替换? 如:假设str中已经存有"请确认数据有误!\r\n中断程序运行."的内容. 这时实际存入str中的内容中的\r和\n是已转义后的内容,不是"\r"或"

QString::arg()//用字符串变量参数依次替代字符串中最小数值

Cpp代码   QString i = "iTest";           // current file's number QString total = "totalTest";       // number of files to process QString fileName = "fileNameTest";    // current file's name QString status = QString("Proc

swing Jlable中存放变量显示问题

java swing 学习 在做一个ATM机系统小案例中,碰到JLable中存放变量,变量发生改变,而JLable中还是显示原来的值,网上寻找答案,用updateUI()和revalidate();方法都没有用,原来解决这个问题,需要把存放变量的JLable设为全局变量. atm机代码下载地址 版权声明:本文为博主原创文章,未经博主允许不得转载.

一般是HTTP_ACCEPT这个服务器变量中如果包含如下几个字符串,就可以判断是手机

知乎用户,IT行业从业者 崔Vincent.知乎用户 赞同 现在手机浏览器的标准也不一样,各有各的浏览器,一般是HTTP_ACCEPT这个服务器变量中如果包含如下几个字符串,就可以判断是手机 text/vnd.wap.wml application/vnd.wap.xhtml+xml 有个特殊例子就是那个手机上的opera,它在发送HTTP_ACCEPT时,不会发送它支持text/vnd.wap.wml文档,但它会发送支持xhtml文档,mime类型为:application/xhtml+xml

bash 脚本编程七 将命令输出保存到变量中(转载)

转自:http://blog.csdn.net/csfreebird/article/details/7978699 `符号包含的命令执行完后,可以讲其输出结果保存到变量中 #!/bin/bash v=`java -version` echo $v 执行结果: $ ./install.sh java version "1.6.0_34" Java(TM) SE Runtime Environment (build 1.6.0_34-b04) Java HotSpot(TM) 64-Bi