unix下对于字符串变量的各种操作总结
在unix like系统的shell中,提供了很多操作字符串变量的灵活语法,我们接下来依次来看一看。
apple@kissAir: ~$path=$PATH
apple@kissAir: ~$echo $path
/opt/local/bin:/opt/local/sbin:/Users/apple/.rvm/gems/ruby-2.1.1/bin:/Users/apple/.rvm/gems/ruby-2.1.1@global/bin:/Users/apple/.rvm/rubies/ruby-2.1.1/bin:/Users/apple/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/
local/bin:/opt/X11/bin
1 从左向右删除最短匹配字符串: ${var#key_str}
apple@kissAir: ~$echo ${path#/*sbin}
:/Users/apple/.rvm/gems/ruby-2.1.1/bin:/Users/apple/.rvm/gems/ruby-2.1.1@global/bin:/Users/apple/.rvm/rubies/ruby-2.1.1/bin:/Users/apple/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/
local/bin:/opt/X11/bin
2 从左向右删除最长匹配字符串:${var##key_str}
apple@kissAir: ~$echo ${path##/*sbin}
:/usr/local/bin:/opt/X11/bin
3 从右向左删除最短匹配字符串:${var%key_str}
apple@kissAir: ~$echo ${path%/*bin}
/opt/local/bin:/opt/local/sbin:/Users/apple/.rvm/gems/ruby-2.1.1/bin:/Users/apple/.rvm/gems/ruby-2.1.1@global/bin:/Users/apple/.rvm/rubies/ruby-2.1.1/bin:/Users/apple/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/
local/bin:/opt/X11
4 从右向左删除最长匹配字符串:${var%%key_str}
apple@kissAir: ~$echo ${path%%/*bin}
5 用key_str1替换第一个key_str0字符串:${var/key_str0/key_str1}
apple@kissAir: ~$echo ${path/sbin/SBIN}
/opt/local/bin:/opt/local/SBIN:/Users/apple/.rvm/gems/ruby-2.1.1/bin:/Users/apple/.rvm/gems/ruby-2.1.1@global/bin:/Users/apple/.rvm/rubies/ruby-2.1.1/bin:/Users/apple/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/
local/bin:/opt/X11/bin
6 用key_str1替换所有的key_str0字符串:${var//key_str0/key_str1}
apple@kissAir: ~$echo ${path//sbin/SBIN}
/opt/local/bin:/opt/local/SBIN:/Users/apple/.rvm/gems/ruby-2.1.1/bin:/Users/apple/.rvm/gems/ruby-2.1.1@global/bin:/Users/apple/.rvm/rubies/ruby-2.1.1/bin:/Users/apple/.rvm/bin:/usr/bin:/bin:/usr/SBIN:/SBIN:/usr/
local/bin:/opt/X11/bin
7 若变量未赋过值则使用默认值,否则使用赋予的值: ${var-default_var}
apple@kissAir: ~$echo $var
apple@kissAir: ~$echo ${var-zero}
zero
apple@kissAir: ~$var=one
apple@kissAir: ~$echo $var
one
8 若变量为赋过值或其值为空字符串则使用默认值,否则使用赋予的值:${var:-default_var}
apple@kissAir: ~$var=
apple@kissAir: ~$echo ${var-null}
apple@kissAir: ~$echo ${var:-null}
null
apple@kissAir: ~$var=one
apple@kissAir: ~$echo $var
one
9 7和8的其他变形语法(摘自《鸟哥自学linux》):
10 待续 :)
unix下对于字符串变量的各种操作总结的更多相关文章
- UNIX下的环境变量--转载
所有环境变量名都是大写小写,系统会当作shell script自定义变量,而不会当作环境变量 [root@mac-home macg]# echo $path ...
- unix下各种查看“变量”的命令比较
子程序只会继承父程序的环境变量,而不继承其自定义变量. env 查看所有环境变量 set 查看所有变量,包括环境变量和自定义变量 set 还可以给程序位置参数赋值: set 1 2 3 将1赋值给$1 ...
- UNIX下的LD_PRELOAD环境变量
UNIX下的LD_PRELOAD环境变量 也许这个话题并不新鲜,因为LD_PRELOAD所产生的问题由来已久.不过,在这里,我还是想讨论一下这个环境变量.因为这个环境变量所带来的安全问题非常严重,值得 ...
- [forward]警惕UNIX下的LD_PRELOAD环境变量
From: https://blog.csdn.net/haoel/article/details/1602108 警惕UNIX下的LD_PRELOAD环境变量 前言 也许这个话题并不新鲜,因为LD_ ...
- js:把字符串转为变量使用; js下将字符串当函数去执行的方法
1 把字符串当变量使用 通过计算 string 得到的值(如果有的话).该方法只接受原始字符串作为参数 demo: var type = "car"; var newStr = & ...
- GO语言的进阶之路-Golang字符串处理以及文件操作
GO语言的进阶之路-Golang字符串处理以及文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们都知道Golang是一门强类型的语言,相比Python在处理一些并发问题也 ...
- c++字符串变量---8
原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 一.字符串变量的定义 1>.对于C与C++来说是没有字符串型的数据类型的,在C++中是通过包含st ...
- Unix下五种IO模型
http://blog.chinaunix.net/uid-25324849-id-247813.html 1. I/O模型 Unix下共有五种I/O模型 a. 阻塞I/O b. 非阻塞I/O c. ...
- otl库(以前不知道有这个库,并且还可以在Unix下使用)
OTL介绍:OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库,例 ...
随机推荐
- C链栈实现
#include <stdlib.h> #include <stdio.h> #include"LinkStack.h" const int TRUE = ...
- Java的访问权限详解(3+1)public private protected default
Java使用三个关键字在类的内部设定访问权限:public.private.protected.这些访问指定词(access specifier)决定了紧跟其后被定义的成员(方法或属性)可以被谁使用. ...
- unix下各种包安装方法备忘
deb包 : sudo dpkg -i google-chrome-stable_amd64.deb
- 11 PopupMenu菜单和代码例子
PopupMenu 弹出式菜单 API 11以上可用 1. 获取弹出菜单的对象 2. 在res里的menu添加菜单项 3. 将布局里的菜单项 给弹出菜单 4. 进行监听弹出菜单 5. 展示出弹出菜单 ...
- 03 EditText文本编辑框
二 EditText 文本编辑框 父类: TextView >概念:文本编辑框 可以进行文本编辑 android:textColor="#00f&qu ...
- Mysql insert语句的优化
1) 如果你同时从同一客户插入很多行,使用多个值表的INSERT语句.这比使用分开INSERT语句快(在一些情况中几倍). Insert into test values(1,2),(1,3), ...
- Chapter 2 User Authentication, Authorization, and Security(7):创建和使用用户自定义服务器角色
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38895357,专题目录:http://blog.csdn.net/dba_huangzj ...
- Dynamics CRM2013 1:N关系 sub-grid中的“添加现有项”和“添加新建项”功能详解
CRM2013中sub-grid的样式和2011中有了较大的变化,2013和2011界面对比如下 在2011的时候按钮是在ribbon区,1:N的父子关系实体直接点击添加新纪录就可以,但2013就不行 ...
- Java集合之WeakHashMap
纸上得来终觉浅,绝知此事要躬行 --陆游 问渠那得清如许,为有源头活水来 --朱熹 WeakHashMap继承于AbstractMap,同时实现了Map接口. 和HashMap一样,Weak ...
- R12.2. Start and Stop Procedure
R12.2. Start and Stop Procedure Leave a comment Individual Components: Application(Middle Tier) $ ...