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 待续 :)

时间: 2024-12-21 21:09:57

unix下对于字符串变量的各种操作总结的相关文章

unix下各种查看“变量”的命令比较

子程序只会继承父程序的环境变量,而不继承其自定义变量. env 查看所有环境变量 set 查看所有变量,包括环境变量和自定义变量 set 还可以给程序位置参数赋值: set 1 2 3 将1赋值给$1,依此类推,且$#被赋值为3 export 类似env,如果不带参数则显示全部环境变量,如果带变量名参数则将该自定义变量转换为环境变量. declare和typeset 两者功能相同,不带参数类似于set:若带参数可以将环境变量与自定义变量相互转换. 

Linux/Unix下ODBC的安装、配置与编程

odbc|unix|编程 Linux/Unix下ODBC的安装.配置与编程 齐亮 (cavendish@eyou.com) 2002 年 7 月 本文主要内容是介绍ODBC的简单原理,以及如何在Linux/Unix下进行ODBC的安装.配置与编程. 一. ODBC原理 ODBC 是Open Database Connect 即开放数据库互连的简称,它是由Microsoft 公司于1991 年提出的一个用于访问数据库的统一界面标准,是应用程序和数据库系统之间的中间件.它通过使用相应应用平台上和所需

如何在Unix下使用Makefile编译程序

makefile关系到了整个工程的编译规则.一个工程中的源文件不计数,其按类型. 功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令. makefile带来的好处就是--"自动化编译",一旦写好,只需要一个make命令,整 个工程完全自动编译,极大的提高了软件开发的效率.make是一个命令工具,是一

2013年5月编程语言排行榜:UNIX下的Bash

2013年5月9日,Tiobe公司发布新一期编程语言排行榜.新一期榜单前10位没有太多的变化,只是Objective-C与C++,Ruby与JavsScript在互相交换位置罢了.今天我们要关注的是排在TOP 20后半部的一门语言--Bash. 大家先请看本期TOP20榜单 从2013年4月的编程语言排行榜我们惊异的发现Bash这门UNIX下的壳语言,竟然有了飞速的上升.从第34位最高上升到第13位.究竟这门语言有什么独特之处? Bash语言2013年以来的增长势头 Bash的诞生 Bash这个

VB6带有字符串变量的公式转换

问题描述 VB6带有字符串变量的公式转换 A=2: B=3: C=5 StrTem="A+B*5+C" 请各位高人指导一下. 解决方案 Dim A,B,C,IntAll As Integer Dim StrTem As String A=2: B=3: C=5 StrTem="A+B*5+C" 怎么让 IntAll=A+B*5+C 解决方案二: 用ScriptControl 解决方案三: ScriptControl 没有变量是可以.有变量时返回的是0 解决方案四:

《构建高可用Linux服务器 第3版》—— 3.5 汇总Linux/UNIX下的bash快捷键

3.5 汇总Linux/UNIX下的bash快捷键 在工作中发现,许多同事,尤其是PHP开发同事,基本不用Linux/UNIX下的快捷键,这严重影响了工作效率.所以我收集了一下CentOS 5.8及FreeBSD 8.1下bash中命令行的快捷键.以下快捷键在CentOS 5.8_x64.FreeBSD 8.1_x64下均可使用.另外,我在每条用法后加上了注释,帮助大家理解它们的作用. Ctrl+A:切换到命令行开始. 这个操作跟Home实现的结果一样,但Home在某些UNIX环境下无法使用,这

unix下远程访问oracle

oracle|unix|访问 今天从unix下远程登录进入oracle,现记录下. 因为在公司都是用双IP进入数据库服务器的,所以用客户端都连不上.只好先telnet 到联通服务器IP,然后再 1.telnet? dbhostIP user/password 2.$ORACLE_HOME/bin sqlplus dbuser/dbpwd@dbname 然后就进入了sqlplus操作界面,其它地方均和windows中操作相同. ed编辑缓存命令和用vi编辑时是一样的.

unix下编写socket程序的一般步骤

在unix下写socket程序可能是最方便,你只要掌握其一般步骤,就可以松的写出面向传输层的应用. 1.理解几个常用的socket函数 #include #include int socket(int domain,int type,int portocol); domain指所使用的协议族(family)可以为AF_UNIX和AF_INET,一般只用AF_INET(指Internet)type指所用的传输类型,可以为SOCK_STERAM(面向连接的TCP),和SOCK_DGRAM(面向无连接

用C#实现字符串的加密解密操作

  哈哈,最近刚刚开始学习C#,感觉挺好.      下面一段代码是用C#实现的,主要完成对字符串的加密和解密操作.           //源代码 //对一段字符串实现加密解密操作 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace study_test4 {     class Program     {         static void Main