《Mysql必知必会》读书笔记 jar包名中自动添加git commit id PyCharm教学视频学习笔记 《SQL基础教程》简要总结 《设计师要懂心理学》读书笔记 MySQL与MariaDB学习笔记 WDT (Folly) 安装指南 -- CentOS 7 [solved]Page build failed(Jekyll) 数据包过滤及分析实例 tshark tcpdump Scala Tour 学习总结 “Docker容器和容器云”读书笔记(1) “Docker Practice”读书笔记 “图解基础设施设计模式”小结 “图解服务器端网络架构”小结 Python网络安全编程 数据包解析笔记 华为挑战赛(1) DDoS攻击防御与云服务 基于网络回溯分析技术的异常行为分析 “Linux程序设计”小结(进程间通信) C语言编程规范(华为软件精英挑战赛) 2017阿里在线编程题--单源最短路径问题 2017年阿里在线编程题-- 数串分组 Uinx/Linux上的帮助查询命令 你懂C,所以C++不在话下 一篇特别长的总结(C专家编程) 程序员面试金典--笔记(精华篇) C陷阱与缺陷--笔记 半小时搭建电子商务网站--opencart linux网络知识和工具(持续更新) 网卡参数查询及设置工具ethtool 高性能流量生成工具trafgen(DDoS模拟) Linux流量控制工具TC 流量控制工具TC详细说明 tcpdump过滤数据包,结果不对? Lecture 网络攻击与防御技术笔记 gotgit-git权威指南 高效使用MacOS所要知道的 shell内置字符串处理 配置ntp(知其所以然) 360黑客攻防技术分享会--记录 中毒U盘恢复--快捷键病毒 Tor--anonymity network介绍(PPT) IBM bluemix 再读《Linux Shell脚本攻略》 linux shell 学习摘记(9) linux shell 学习摘记(8) linux shell 学习摘记(7) linux shell 学习摘记(6) linux shell 学习摘记(5) linux shell 学习摘记(4) linux shell 学习摘记(3) linux shell 学习摘记(2) linux shell 学习摘记(1) firefox vim 插件 vimperator A Byte of Vim 笔记 windows注册表小知识 安全测试工具篇(开源&商业) 安全及性能测试工具(网站收集) 性能测试工具 屡试不爽的“3个”iPad使用技巧 Shell Shortcuts(和Tab键一样实用) vim--自动添加jekyll post信息头 vim 自动给文件添加头部信息 GitHub Tips (很实用,值得收藏) Linux路由、防火墙、NAT命令

shell内置字符串处理

2016年11月20日

总结了shell中内置的字符串处理功能,包括> ${} # % :- :+ ? 等的使用
使用内置操作符处理字符串时,性能较好

赋值处理

  1. ${string-word} : 如果string没设定,则使用word作为返回值(空值和非空值不做处理)
  2. ${string:-word}: 如果string没设定或为空值,则使用word作为返回值(非空值时不做处理) 经常使用
  3. ${string+word} : 如果string设定了(空值或非空值),则使用word作为返回值(没有设定不做处理)
  4. ${string:+word}: 如果string为非空值,则使用word作为返回值(没设定或空值时不做处理)
  5. ${string=word} : 如果string没设定,则使用word作为返回值,同时将word值赋值给string
  6. ${string:=word}: 如果string没设定或为空值,则使用word作为返回值,同时将word复制给string
  7. ${string?word} : 如果string没有设定,则将word输出到STDERR(空值及非空值不做处理)
  8. ${string:?word}: 如果string没设定或为空值,则将word输出到STDERR(非空值不做处理)

获取字符串长度

${#string}(号也称为为number sign)

字符串删除

设定string='http://www.codeshold.me/2016/11/mac_skills.html'

  1. ${string#*/} : 删掉第一个/及其左边的字符串,返回:/www.codeshold.me/2016/11/mac_skills.html
  2. ${string##*/}: 删掉最后一个/及其左边的字符串, 返回mac_skills.html
  3. ${string%/*} : 删掉最后一个/及其右边的字符串,返回http://www.codeshold.me/2016/11
  4. ${string%%/*}: 删除第一个/及其右边的字符串,返回http:
  5. 类似的有${string#*.}删掉第一个.及其左边的字符串,${string%.*}删掉最后一个.及其右边的字符串

记忆方法:
# 表示从左往右匹配(键盘上 #$ 的左边)
% 表示从右往左匹配(键盘上 %$ 的右边)
单一符号是最小匹配(非贪婪);两个符号是最大匹配(贪婪匹配)
${变量名#substring正则表达式}从字符串开头开始配备substring,删除匹配上的表达式
${变量名%substring正则表达式}从字符串结尾开始配备substring,删除匹配上的表达式

字符串截取

设定string=abcdefg,字符串的下标从0开始

  1. ${string:2} : 返回string中从第3个到结束的所有字符,即cdefg
  2. ${string:0} : 返回string中从第1个到结束的所有字符,即abcdefg
  3. ${string:0:5} : 返回string中从第1个开始的5个字符,即abcde
  4. ${string:0-1} : 返回string中最后一个字符, 即g
  5. ${string:0-3} : 返回string中从倒数第3个字符到结束的所有字符, 即efg
  6. ${string:0-3:2}: 返回string中从倒数第3个字符开始的2个字符,即ef

记忆方法:
${string:开始:长度}

字符串替换

设定string=/dir1/dir2/dir3

  1. ${string/dir/swf} : 将第一个dir替换成swf,返回/swf1/dir2/dir3
  2. ${string//dir/swf} : 将全部的dir替换成swf,返回/swf1/swf2/swf3

记忆方法:
两个符号//表示贪婪匹配(全部替换)
${变量/查找/替换值}查找中出现了”/”要加转义符”\/”表示


知识共享许可协议
SWF's Hacking Dreamonephone 创作,采用 知识共享 署名-非商业性使用 4.0 国际 许可协议进行许可。
© 2011-2018. All rights reserved by onephone. Powerd by Jekyll.