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++编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库,例 ...
随机推荐
- XMPP系列(七)---获取群组列表
上一篇介绍了如何创建群组,这一篇就介绍一下,如何获取自己的群组列表. 在上一篇有提到,如果我们创建的群组是公共的群组,那么获取自己的群组列表时,会获取到自己的群组列表和那些公共的群组.而实际做社交的应 ...
- 剑指offer面试题3 二维数组中的查找 (java)
注:java主要可以利用字符串的length方法求出长度解决这个问题带来方便 public class FindNum { public static void main(String[] args) ...
- XCode5添加新建类模板(Cocos2dx Template Class for Scene or Layer)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=505 因为常用cocos2dx开 ...
- 编译GDAL使用最新的HDF库配置文件
HDF库最新版本中的动态库以及目录结构都发生了变化,导致按照之前的博客进行编译GDAL时,会出问题.使用HDF4版本为HDF4-4.2.10,HDF5的版本为HDF5-1.8.12.两个库的目录结构如 ...
- Linux内核编译时会遇到的问题--缺少mkimage
由于各大平台所带的内核不同,所以编译方式也不同,但方法都是大同小异. 但是,编译内核有时候会提示缺少mkimage这个命令,如何解决? 供应商提供内核的同时也会提供其它的一些,比如Uboot,root ...
- (八十)MapKit放置系统默认大头针和自定义大头针
有关MapView的显示和定位在上一节已经说明,这一节说明如何在地图上放置大头针,以及设置点击大头针的视图. [系统默认大头针] mapView上放置大头针的方法是调用其addAnnotation:方 ...
- 《java入门第一季》之泛型类引入
首先用一个例子引入泛型类. 我定义一个Object类: package cn.it_03; public class ObjectTool { private Object obj; public O ...
- 转换xml格式的短信记录
<?xml version="1.0" encoding="UTF-8"?> <SMSRecord> <SMS> ...
- Caffe框架,图像数据转换成LMDB数据格式
小码农最近在研究深度学习,对所学知识做点记录,以供以后翻阅.在Caffe框架中,数据的格式都是LMDB的,如何将图像数据转换成这个格式呢? 首先,将图像数据和标签生成txt文档,执行一下代码: fin ...
- 【Android 应用开发】 Fragment 详解
作者 : 韩曙亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38064191 本博客代码地址 : -- 单一 Fragmen ...