shell基础--字符串和变量的操作
一.统计字符串长度
1.wc –L
[root@~_~day4]# echo "hello" | wc -L
5
2.expr length string
[root@~_~day4]# echo `expr length "hello"`
5
3.${#String}
[root@~_~day4]# a="hello"
[root@~_~day4]# echo ${#a}
5
压力测试实验:
[root@~_~~]# echo $chars
hello world
[root@~_~~]# time for i in $(seq 11111);do count=${#chars};done
real 0m0.069s
user 0m0.069s
sys 0m0.001s
[root@~_~~]# time for i in $(seq 11111);do count=`echo expr length "#chars"`;done
real 0m3.949s
user 0m0.481s
sys 0m3.853s
[root@~_~~]# time for i in $(seq 11111);do count=`echo ${chars}| wc -L`;done
real 0m13.643s
user 0m2.743s
sys 0m14.989s
注意:内置命令运行比管道快得多,速度快慢如下:${#string}>${string} |wc -L >${expr length "$string"}
二.字符串模式匹配
1.查看所有帮助:
首先:man bash
然后:/Parameter Expansion
2.截取字符串长度
${parameter:offset} :从offset截取到字符串结尾
${parameter:offset:length} :从offset截取长度为length的字符串
[root@~_~day4]# a="hello world"
[root@~_~day4]# echo ${a:2:3}
Llo
[root@~_~day4]# echo ${a:2}
llo world
3.替换
${parameter/pattern/string}:用一种匹配模式pattern匹配字符串,并用string替代
(1).${myString/#beginStr/replaceStr} :前面匹配
(2).${myString/%endStr/replaceStr}:后面匹配
(3).${myString/matchStr/replaceStr}:匹配第一个matchStr
[root@~_~day4]# a="hello world"
[root@~_~day4]# echo ${a/#hello/"你好"}
你好 world
[root@~_~day4]# echo ${a/%world/"世界"}
hello 世界
[root@~_~day4]# a="hello hello world"
[root@~_~day4]# echo ${a/hello/"你好"}
你好 hello world
4.删除
${parameter#word}:从变量string开头开始删除最短匹配$word子串
${parameter##word}:从变量string开头开始删除最长匹配$word子串
${parameter%word}:从变量string结尾开始删除最短匹配$word子串
${parameter%%word}:从变量string结尾开始删除最长匹配$word子串
[root@~_~day4]# echo ${a##hello}
hello worldworld
[root@~_~day4]# echo ${a#hello}
hello worldworld
[root@~_~day4]# a="hello hello worldworld"
[root@~_~day4]# echo ${a%world}
hello hello world
[root@~_~day4]# echo ${a%%world}
hello hello world
三.空值处理
1.${parameter:-word} Use Default Values. 当${parameter}的值为空或是没有设定,用word的值将作为表达式的值,否则${parameter}就是表达式的值
[root@~_~day4]# echo ${myvalue:-hello}
hello
[root@~_~day4]# echo ${myvalue}
[root@~_~day4]# myvalue="test"
[root@~_~day4]# echo ${myvalue:-hello}
test
2.${parameter:=word} Assign Default Values. 当${parameter}的值为空或是没有设定,将word的值赋予${parameter}将并作为表达式的值,否则${parameter}就是表达式的值
[root@~_~day4]# echo ${secondevalue:=hello}
hello
[root@~_~day4]# echo ${secondevalue}
hello
[root@~_~day4]#
3.${parameter:?word} Display Error if Null or Unset
当${parameter}值为空或者没有设定的时候,用[word]值作为标准错误输出提示并退出shell且返回非0状态。否则它就是该表达式的值
[root@~_~day4]# echo ${myparam:?"the value is empty"}
-bash: myparam: the value is empty
[root@~_~day4]# echo ${myparam}
[root@~_~day4]#
4.${parameter:+word} Use Alternate Value
当${parameter}值为空或者没有设定的时候,表达式返回null。否则用[word]替换表达式的值。
[root@~_~day4]# echo ${myparam:+"the value is empty"}
[root@~_~day4]# myparam="hello"
[root@~_~day4]# echo ${myparam:+"the value is empty"}
the value is empty
[root@~_~day4]#
shell基础--字符串和变量的操作的更多相关文章
- shell基础——字符串处理(转载)
Shell的字符串处理 1 得到长度 %x="abcd" #方法一 %expr length $x 4 # 方法二 %echo ${#x} ...
- 『忘了再学』Shell基础 — 21、变量的测试与内容置换
目录 1.什么是变量的测试与内容置换 2.变量的测试与内容置换 3.示例 例1: 例2: 例3: 1.什么是变量的测试与内容置换 我们之前说过,在Shell中,一个变量未定义,和一个变量为空值的输出效 ...
- Linux学习笔记(16)shell基础之Bash变量
1. 用户自定义变量 (1)变量设置规则 ① 变量名称可由字母.数字和下划线组成,但不能以数字开头: ② 变量的默认类型为字符串类型,如果要对数值运算,则必须指定变量类型为数值型: ③ 变量用等号连接 ...
- 『忘了再学』Shell基础 — 11、变量定义的规则和分类
目录 1.定义变量的规则 2.变量的分类 1.定义变量的规则 在定义变量时,有一些规则需要遵守 变量名称可以由字母.数字和下划线组成,但是不能以数字开头.如果变量名是2name则是错误的. 在Bash ...
- shell 将字符串作为变量名并打印
使用shell的eval实现此功能.代码如下: #!/bin/sh IP9="127.0.0.1" i=9 eval echo \$IP${i} #!/bin/sh WEBIP0= ...
- shell基础:环境变量
子shell是在父shell中打开的shell. 使用pstree查看进程树. $调用环境变量 set查看所有变量内容, env查询环境变量 只是临时改变
- shell基础——字符串连接
#!/bin/sh str1="hello" str2="world" echo str1=$str1, str2=$str2 strconn1=$str1$s ...
- shell基础:位置参数变量
位置参数名称,作用不变.变得是传入参数. 抽象问题,大多为年长资格老师少数年轻老师,故而问的技术细节少,抽象理论知识多,比如什么是软件工程,问什么会有软件工程.有事注重的是品质,有的注重出身. 每种都 ...
- shell基础:用户自定义变量
随机推荐
- 写一个有字符界面的ssh链接工具
大概的样子 这是大致的样子- 写之前想说的 因为个人工作的的电脑是deepin系统的,系统本身的命令行非常好用,用第三方的ssh工具用不习惯,就想自己写一个. shell脚本是第一次写,写的不是很好, ...
- STS的安装教程-鹏鹏
STS全称Spring Tools Suite. 简介:Spring Tools Suite (STS)其实就是一个被包装过的Eclipse,主要用于快速的开发Spring项目,我们不用再去编辑繁琐的 ...
- python之线程queue
线程queue介绍 Queue的种类: FIFO: Queue.Queue(maxsize=0) FIFO即First in First Out,先进先出.Queue提供了一个基本的FIFO容器,使 ...
- execution表达式
execution(<修饰符模式>?<返回类型模式><方法名模式>(<参数模式>)<异常模式>?) 除了返回类型模式.方法名模式和参数模式外 ...
- Python 两个list合并成一个字典
方法一:list1 = ['k1','k2','k3'] list2 = ['v1','v2','v3'] dic = dict(map(lambda x,y:[x,y],list1,list2)) ...
- Docx4j将html转成word时,br标签为软回车的问题修改
docx4j版本:3.0.1 修改jar包:docx4j-ImportXHTML maven配置为: 具体代码位置:\org\docx4j\convert\in\xhtml\XHTMLImporter ...
- Multipath多路径冗余
一.什么是multipath 多路径冗余I/O(Multipath I/O)是指服务器通过多条物理路径连接到块存储设备. 为了避免存储链路单点故障,保证在磁盘阵列控制器切换时数据访问的不间断,多链路负 ...
- 倒计时5,4,3,2,1css实现(count down from 5 to 1 using css)
//count down from 5 to 1, a useful animation. show the code to you: <!DOCTYPE html> <html ...
- Keras GlobalAveragePooling2D 示例代码
GlobalAveragePooling2D层 keras.layers.pooling.GlobalAveragePooling2D(dim_ordering=‘default‘) 为空域信号施加全 ...
- XSS 相关 payload 集合
Ajax 获取数据 GET function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest){// code for IE7+, Fire ...