Shell中的字符串操作

最近总结了一下shell中关于字符串的一些操作,希望能帮助大家更好的了解shell。在shell中也可以通过awk、sed等外部命令来操作字符串,但是调用这些外部命令处理起来与shell内置操作符的性能相差非常大,所以建议大家尽量使用内置操作符和函数来完成对字符串的操作。废话不多说,下面就来看一下shell中内置的字符串操作符和函数吧。

1、判断读取shell变量的值  

表达式 含义 实例
${var} 变量var的值,同$var
[email protected]:~$ var="test"

[email protected]:~$ echo ${var}

test

${var-default} 如果var没有被声明, 那么就以default作为${var-default}的值 
[email protected]:~$ unset var

[email protected]:~$ echo ${var-default}

default

[email protected]:~$ echo $var

[email protected]:~$ var=""

[email protected]:~$ echo ${var-default}

[email protected]:~$

${var:-default} 如果var没有被声明, 或者其值为空, 那么就以default作为${var-default}的值 
[email protected]:~$ unset var

[email protected]:~$ echo ${var:-default}

default

[email protected]:~$ echo $var

[email protected]:~$ var=""

[email protected]:~$ echo ${var-default}

default

[email protected]:~$

${var=default} 如果var没有被声明, 那么就以default作为${var-default}的值,同时将var赋值为default 
[email protected]:~$ unset var

[email protected]:~$ echo ${var=default}

default

[email protected]:~$ echo $var

default

[email protected]:~$ var=""

[email protected]:~$ echo ${var=default}

[email protected]:~$

${var:=default} 如果var没有被声明, 或者其值为空, 那么就以default作为${var-default}的值,同时将var赋值为default 
[email protected]:~$ var=""

[email protected]:~$ echo ${var:=default}

default

[email protected]:~$ echo $var

default

[email protected]:~$ var=""

[email protected]:~$ echo ${var=default}

default

[email protected]:~$

${var+default} 如果var声明了, 那么其值就是default, 否则就为null字符串
[email protected]:~$ var=

[email protected]:~$ echo ${var+default}

default

[email protected]:~$ echo ${var:+default}

[email protected]:~$ echo $var

[email protected]:~$ var="test"

[email protected]:~$ echo ${var+default}

default

[email protected]:~$ echo ${var:+default}

default

[email protected]:~$ echo $var

test

${var:+default} 如果var被设置了, 那么其值就是default, 否则就为null字符串 同上

${!test*}

${[email protected]}

匹配之前所有以test开头进行声明的变量 [email protected]:~$ test1=

[email protected]:~$ test2=

[email protected]:~$ test3=

[email protected]:~$ echo ${[email protected]}

test test1 test2 test3

[email protected]:~$ echo ${!test*}

test test1 test2 test3

[email protected]:~$

2、字符串操作

表达式 定义 实例
${#var} $var的长度
[email protected]:~$ var="hello"

[email protected]:~$ echo ${#var}

5

[email protected]:~$

${var:x} 从位置 x 开始提取子串
[email protected]:~$ echo ${var:2}

llo

${var:x:y} 从位置 x 开始提取长度为 y 的子串
[email protected]:~$ echo ${var:2:2}

ll

${var#*str} 从变量$var的开头, 删除最短匹配str的子串
[email protected]:~$ echo ${var#*l}

lo

${var##*str} 从变量$var的开头, 删除最长匹配str的子串 [email protected]:~$ echo ${var##*l}

o

${var%str*} 从变量$var的结尾, 删除最短匹配str的子串
[email protected]:~$ echo ${var%l*}

hel

${var%%str*} 从变量$var的结尾, 删除最长匹配str的子串
[email protected]:~$ echo ${var%l*}

he

${var/src/dst} 使用dst, 来代替第一个匹配的src
[email protected]:~$ echo ${var/l/o}

heolo

${var//src/dst} 使用dst, 来代替所有匹配的src
[email protected]:~$ echo ${var//l/o}

heooo

${var/#src/dst} 如果var的前缀匹配src, 那么就用dst来代替匹配到的src
[email protected]:~$ echo ${var/#l/a}

hello

[email protected]:~$ echo ${var/#h/a}

aell

${var/%src/dst} 如果var的匹配src, 那么就用dst来代替匹配到的src
[email protected]:~$ echo ${var/%o/a}

hella

PS:“str和src”可以是正则表达式


时间: 2024-10-26 19:14:04

Shell中的字符串操作的相关文章

shell中的字符串操作——字符串的切割

default.yaml {default_baseurl: 'http://10.113.10.68:8082'} test.sh a=`cat default.yaml` t=":" index=`awk -v a="$a" -v b=":" 'BEGIN{print index(a,b)}'` diff=${#a}-$index-2 let index=index+1 default_url=`echo ${a:$index:$diff}|

linux shell学习(字符串操作)--01

http://blog.csdn.net/shuanghujushi/article/details/51298672 在bash shell的使用过程中,经常会遇到一些字符串string的操作,下面是个人的一些使用总结. 一.字符串的定义 用双引号,单引号,或者直接在接在=后,都可以定义一个字符串,如下,定义了三个字符串 str1="this is a string" str2='this is a string' str3=this_is 但双引号和单引号,在bash中还是有区别的

JavaScript中的字符串操作

JavaScript中的字符串操作 一.概述    字符串在JavaScript中几乎无处不在,在你处理用户的输入数据的时候,在读取或设置DOM对象的属性时,在操作cookie时,当然还有更多....JavaScript的核心部分提供了一组属性和方法用于通用的字符串操作,如分割字符串,改变字符串的大小写,操作子字符串等.    当前的大部分浏览器也能从强大的正则表达式获益,因为它极大地简化了大量的字符串操作任务,不过它也需要你克服一条有些陡峭的学习曲线.在这里,主要是介绍字符串本身的一些操作,正

shell中截取字符串的方法总结

shell中截取字符串的方法有很多种, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ${parameter:+word} 上面4种可以用来进行缺省值的替换. ${#parameter} 上面这种可以获得字符串的长度. ${parameter%word} 最小限度从后面截取word ${parameter%%word} 最大限度从后面截取word ${parameter#word}

lua中的字符串操作(模式匹配)

模式匹配函数 在string库中功能最强大的函数是: string.find(字符串查找)string.gsub(全局字符串替换)string.gfind(全局字符串查找)string.gmatch(返回查找到字符串的迭代器) 这些函数都是基于模式匹配的.与其他脚本语言不同的是,Lua并不使用POSIX规范的正则表达式[4](也写作regexp)来进行模式匹配.主要的原因出于程序大小方面的考虑:实现一个典型的符合POSIX标准的regexp大概需要4000行代码,这比整个Lua标准库加在一起都大

【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。

//编写一个函数reverse_string(char * string)(递归实现) //实现:将参数字符串中的字符反向排列. //要求:不能使用C函数库中的字符串操作函数. #include <stdio.h> #include <assert.h> void reverse_string(char const * string) { assert( string != NULL ); if( *string != '\0' ) { string++; reverse_stri

SQL点滴33—SQL中的字符串操作

原文:SQL点滴33-SQL中的字符串操作 计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写 select lower('I AM A STUDENT !') select upper('i am a student !') 截去字符串左.右侧空格                                    

[记录] JavaScript 中的字符串操作

JS 中的字符串操作 字符串:基本数据类型,一旦定义就不会被修改,如果修改则是重新开辟空间存储.字符串有属性length和一系列方法. 字符串的生成转换 (可以将任何类型的数据转换为字符串) 转换成字符串的三种方式: 1. .toString() 方法 注: undefined.null没有toString()方法. code: var num = 28; console.log(typeof num.toString()); // 返回结果是"string", 2. String()

shell变量与字符串操作

默认情况下,Bash shell是一种无类型的脚步语言,除非用declare特别声明,否则它不会区分一个变量是整数变量.浮点数变量还是字符串变量.在Bash shell中所有的变量都被看成是字符串,使用时也不需要进行声明. 1.变量的命名 bash shell中变量的命名规则和C语言相同,必须是由英文字母.数字及下划线组成,第一个字符必须是字母或下划线,变量的长度没有限制,但英文字母区分大小写.虽然,bash shell中使用变量时不需要声明,但还是提倡对一些重要的变量进行声明.添加注释,以便阅