shell的string operator
${varname:-word}
如果varname存在并且不为nil,那么返回varname的值,否则返回word。这个常用来在varname未定义时返回默认值
${varname:=word}
如果varname存在并且不为nil,那么返回varname的值,否则将varname的值设置为word并且返回该值。这个常用来对变量设置默认值
${varname:?message}
如果varname存在并且不为nil,那么返回varname的值,否则打印varname:message,并且中断脚本(只有在non-interactive shell下成立)
${varname:+word}
如果varname存在并且不为nil,返回word,否则返回nil
${varname:offset:length}
从offset开始,截取长度为length的子串,其中字符串的序号从0开始算,有以下几种特殊情况:
1 若不指定length,则一直截取到整个字符串末尾
2 若offset为负数,从字符串末尾开始往后数offset个字符,然后截取length个字符;如果不指定length,那么一直截取到整个字符串末尾,比如:
name=abcdef
${name: -:} 输出de
${name: -} 输出def
这里需要注意的是,此时-与:之间有空格,目的是让shell区分${varname:-word}这种形式
3 如果varname是*或者@,那么就是从第offset个position parameter开始,截取length个,如果不指定length,那么就一直截取到最后一个position parameter
${varname#pattern}
从varname的开头开始匹配,然后删除最短的匹配项,将剩余的字符串返回
${varname##pattern}
从varname的开头开始匹配,然后删除最长的匹配项,将剩余的字符串返回
${varname%pattern}
从varname的末尾开始匹配,然后删除最短的匹配项,将剩余的字符串返回
${varnam%%pattern}
从varname的末尾开始匹配,然后删除最长的匹配项,将剩余的字符串返回
${varname/pattern/string}
将第一个最长的匹配项替换为string,若string为nil,则删除该匹配项
${varname//pattern/string}
将所有最长的匹配项替换为string,若string为nil,则删除该匹配项
在上面两种替换模式中,如果pattern以#开头,那么就是从varname开头进行匹配;如果varname为*或者@,那么替换就是依次对每一个position parameter进行。
shell的string operator的更多相关文章
- shell tips
1.shopt 命令可以设置shell的可选参数 shopt [-psu] [optname...] -s 开启某个选项 -u 关闭某个选项 -p 列出所有可设置的选项 其中开启extglob选项,s ...
- C++ string 用法详解
/////////////////////////////////////////////////////////////////////////////////// 任何人对本文进行引用都要标明作者 ...
- C++中的string类(1)
http://blog.sina.com.cn/s/blog_51409e8f01009h7g.html 前言: string 的角色1 string 使用1.1 充分使用string 操作符1.2 ...
- 标准库String类
下面的程序并没有把String类的所有成员方法实现,只参考教程写了大部分重要的成员函数. [cpp] view plain copy #include<iostream> #include ...
- 自己实现简单的string类
1.前言 最近看了下<C++Primer>,觉得受益匪浅.不过纸上得来终觉浅,觉知此事须躬行.今天看了类类型,书中简单实现了String类,自己以前也学过C++,不过说来惭愧,以前都是用C ...
- C++ string类的实现
c++中string类的实现 今天面试被考到了, 全给忘记了!!! //string类的实现 #include <iostream> #include <string.h> ...
- string的实现
面试常常用到string类的实现,自己总结了一下: #pragma once #include <iostream> #include <cassert> #include & ...
- 标准C++中的string类的用法总结
标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...
- c++:string函数
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持 ...
随机推荐
- oracle数据泵之解决方案(用户)导入导出。
看到网上有这样的介绍而且很多,但觉得都是大神才能一下子看的懂.自己总结下菜鸟能看懂的. 1.导出. 首先第一步: 操作系统—开始—运行输入“cmd”进入dos界面输入“sqlplus/nolog”按回 ...
- akka简单示例-1
刚刚开始接触akka,网上找了2个简单示例,并在公司运营机器上尝试,踩了一些坑,在此记录. 1. 本地hello world [torstan@sparkb5-i ~/akka_example/hel ...
- mongodb 增加用户以及认证用户
test>use admin switched to db admin admin>db.addUser('yshy','yshy') { "user" : " ...
- php 读取 word
---恢复内容开始--- 首先安装com扩展: php.ini php.ini 确保有此语句 [PHP_COM_DOTNET] extension=php_com_dotnet.dll php.i ...
- DLL模块:extern "C"的简单解析
1.揭密extern "C" extern "C"包含双重含义,从字面上即可得到:首先,被它修饰的目标是 "extern”的:其次,被它修饰的目标是 ...
- [LeetCode] 147. Insertion Sort List 解题思路
Sort a linked list using insertion sort. 问题:实现单向链表的插入排序. 这是比较常规的一个算法题目. 从左往右扫列表,每次将指针的下一个元素插入前面已排好序的 ...
- solr安装
Windows solr(tomcat) 1.1. 安装步骤 1.1.1准备工作 1. 服务器:apache-tomcat-7.0.40压缩版,http://localhost:8080/安装是否成功 ...
- Difference between <? super T> and <? extends T> in Java
stackoverflow 原文 [http://stackoverflow.com/questions/4343202/difference-between-super-t-and-extends- ...
- Java里的接口
Java里面由于不允许多重继承,所以如果要实现多个类的功能,则可以通过实现多个接口来实现. Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现.OOP面向对象的编程,如 ...
- OpenCV中OpenCL模块函数
It currently develop and test on GPU devices only. This includes both discrete GPUs(NVidia,AMD), as ...