原文网址:http://blog.csdn.net/trochiluses/article/details/9048539

缺省值(:-)

 

如果变量后面跟着冒号和减号,则变量后面跟着是这个变量的缺省值。

$ COMPANY=

$ printf “%s/n” “${COMPANY:-Unknown Company}”

Unknown Company

变量的实际值可以保持不变。

冒号也可以省略掉不用:

$ COMPANY=

$ printf “%s/n” “${COMPANY-Nightlight Inc.}”

$

指定缺省值(:=)

如果变量后面跟着冒号和等号,则给空变量指定一个缺省值。

$ printf “%s/n” “${COMPANY:=Nightlight Inc.}”

Nightlight Inc.

$ printf “%s/n” “$COMPANY”

Nightlight Inc.

变量的实际值已经改变了。

去除冒号,则不会指定缺省值。

变量是否存在检查(:?)

如果变量后面跟着冒号和问号,则根据变量是否存在,显示不同的信息。信息不是必选的。

printf “Company is %s/n” /

“${COMPANY:?Error: Company has notbeen defined—aborting}”

如果没有冒号则不会进行检查。

覆盖缺省值(:+)

如果变量后面跟着冒号和加号,则加好后面的字符串替换默认字符串。

$ COMPANY=”Nightlight Inc.”

$ printf “%s/n” “${COMPANY:+Company has been overridden}”

Company has been overridden

如果没有冒号,变量也被字符串所替换,变量本身的值不改变。

替换部分字符串(:n)

如果变量后面跟着一个冒号和数字,则返回该数字开始的一个子字符串,如果后面还跟着一个冒号和数字。则第一个数字表示开始的字符,后面数字表示字符的长度。

$ printf “%s/n” “${COMPANY:5}”

light Inc.

$ printf “%s/n” “${COMPANY:5:5}”

light

根据模板删除字串(%,#,%%,##)

如果变量后面跟着井号,则返回匹配模板被删除后的字串。一个井号为最小可能性的匹配,两个井号为自大可能性的匹配。表达式返回模板右边的字符。

$ printf “%s/n” “${COMPANY#Ni*}”

ghtlight Inc.

$ printf “%s/n” “${COMPANY##Ni*}”

$ printf “%s/n” “${COMPANY##*t}”

Inc.

$ printf “%s/n” “${COMPANY#*t}”

light Inc.

使用百分号,表达式返回模板左边的字符

$ printf “%s/n” “${COMPANY%t*}”

Nightligh

$ printf “%s/n” “${COMPANY%%t*}”

Nigh

(在我的Linux系统中上述命令不起取用)

使用模板进行子字符串的替换(//)

如果变量后只有一个斜杠,则两个斜杠中间的字符串是要被替换的字符串,而第二个斜杠后面的字符串是要替换的字符串。如果变量后面跟着两个斜杠,则所有出现在两个斜杠中间的字符都要被替换为最后一个斜杠后面的字符。

$ printf “%s/n” “${COMPANY/Inc./Incorporated}”

Nightlight Incorporated

$ printf “You are the I in %s” “${COMPANY//i/I}”

You are the I in NIghtlIght Inc.

如果模板一#号开始,则匹配以模板开始的字符,如果模板以%号结尾,则匹配以模板结尾的字符。

$ COMPANY=”NightLight Night Lighting Inc.”

$ printf “%s/n” “$COMPANY”

NightLight Night Lighting Inc.

$ printf “%s” “${COMPANY//Night/NIGHT}”

NIGHTLight NIGHT Lighting Inc.

$ printf “%s” “${COMPANY//#Night/NIGHT}”

NIGHTLight Night Lighting Inc.

(我的Linux中这个不起作用)

如果没有指定新的值,则匹配的字符会被删除。

$ COMPANY=”Nightlight Inc.”

$ printf “%s/n” “${COMPANY/light}”

Night Inc.

也可以使用范围符号。例如:删除所有字符串中的标点符号,使用范围[:punct:]。

$ printf “%s” “${COMPANY//[[:punct:]]}”

Nightlight Inc

使用星号或@符号替换变量会替换外壳脚本中所有的参数,同样,在数组中使用星号或@符号也会替换数组中的所有元素

转载于:https://www.cnblogs.com/wi100sh/p/4205909.html

【转】shell 编程:冒号 后面跟 等号,加号,减号,问号的意义相关推荐

  1. shell美元符_美元符号_笨办法学Bash Shell编程-基础篇视频课程_Linux视频-51CTO学院...

    聪明人下笨功夫.本课程所倡导"笨办法"的核心是: ● 手动输入所有代码,不要复制粘贴! ● 正确地输入所有代码,也包括注释 ● 运行代码并保证产生相同的输出 ● 如果出现了bug, ...

  2. Linux之shell编程

    walkingLL 2018-09-22 08:51:26 14717 收藏 129 shell历史 Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互 ...

  3. linux 命令详解 大于号_大于号与小于号_笨办法学Bash Shell编程-基础篇视频课程_Linux视频-51CTO学院...

    聪明人下笨功夫.本课程所倡导"笨办法"的核心是: ● 手动输入所有代码,不要复制粘贴! ● 正确地输入所有代码,也包括注释 ● 运行代码并保证产生相同的输出 ● 如果出现了bug, ...

  4. Linux Shell编程基础

    linux系统下给命令指定别名alias命令用法: 在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名.虽然可以为命令建立"链接"解决长文件名的问题,但 ...

  5. Linux Shell 编程学习总结

    Shell 教程 Shell简介:什么是Shell,Shell命令的两种执行方式 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成 ...

  6. 《Linux与unix Shell编程指南》 总结

    <Linux与unix Shell编程指南> 总结 标签: linux网络dstcron服务器 2011-01-10 18:27 3742人阅读 评论(0) 收藏 举报 分类: Linux ...

  7. Shell编程: Shell 变量

    深入浅出Shell编程: Shell 变量 先不要管Shell的版本,来看看Shell 变量,在Shell中有三种变量:系统变量,环境变量,用户变量.其中用户变量在编程过程中使用最多,系统变量在对参数 ...

  8. Linux: Shell编程基础

    我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #!/bin/bash ... 注意:最好使用&quo ...

  9. Linux的shell编程

    Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种 ...

  10. Linux的shell编程(二)

    3. shell程序设计(基础部分) 其实作为命令语言交互式地解释和执行用户输入的命令只是shell功能的一个方面,shell还可以用来进行程序设计,它提供了 定义变量和参数的手段以及丰富的程序控制结 ...

最新文章

  1. 【贪心】【P5078】Tweetuzki 爱军训
  2. 在python3.3后urllib2已经不能再用,只能用urllib.request来代替
  3. 山东大学linux实验四CSDN,山东大学操作系统实验报告材料4进程同步实验
  4. pc网站和移动网站在同一服务器吗,机动都市阿尔法PC服和移动服互通吗
  5. RuoYi-Cloud 部署篇_02(linux环境 Oracle +nginx版本)
  6. 线程----Monitor(互斥锁)类设置超时值
  7. 浅谈电子数字取证技术
  8. 计算机安全的重要性 小论文,网络安全的重要性初中议论文
  9. 包括8个html的网页设计作品,8个超棒的HTML5网站设计欣赏
  10. 牛腩新闻发布系统总结——网站发布和分页制作
  11. 内连接和外连接的区别--举例
  12. 在未知社交网络中最大化影响力(论文翻译)
  13. 前端实现动画的方法总结
  14. ParkingEE智能化停车服务平台
  15. 做新媒体短视频运营需要什么技能
  16. 电容或电感的电压_电容和电感的区别、电压超前电流、电流超前电压,傻傻分不清楚...
  17. 微信小程序----icon组件
  18. EDA软件—Cadence学习笔记分享(内含安装教程)
  19. elevation格式_Google Elevation的工作方式以及如何创建简单的C#应用​​程序?
  20. Android模拟请求调页-广工操作系统课设

热门文章

  1. 换版 | 注意,这些产品认证规则修订啦
  2. 光盘修复计算机加载驱动,如何解决在Windows中无法使用光盘驱动器的问题
  3. 第二章 半步先天,以气驭剑!
  4. ZZNUOJ_C语言1011 : 圆柱体表面积(完整代码)
  5. 图解更换鼠标触点开关
  6. 零基础微信小程序Day1
  7. Java面向对象10:Super详解
  8. 卡罗拉 (COROLLA) 2017 款 改款 1.6 L S-CVT GL - 音响控制
  9. 基础07:列表 ,列一个购物清单
  10. js 判断数组中是否包含