加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

【Bash百宝箱】shell内建命令之冒号

发布时间:2020-12-13 21:15:02 所属栏目:PHP教程 来源:网络整理
导读:在shell中,冒号“:”是1个内建(builtin)命令,格式以下: : [ arguments ] 冒号命令本身没甚么副作用,使用处景有限,1般用于参数扩大,有以下几种用法: $ { parameter : -word } 如果 parameter 没有设置或为空,替换为 word ;否则替换为 parameter 的

在shell中,冒号“:”是1个内建(builtin)命令,格式以下:

: [arguments]

冒号命令本身没甚么副作用,使用处景有限,1般用于参数扩大,有以下几种用法:

${parameter:-word} 如果parameter没有设置或为空,替换为word;否则替换为parameter的值。 ${parameter:+word} 如果parameter没有设置或为空,不进行任何替换;否则替换为word。 ${parameter:=word} 如果parameter没有设置或为空,把word赋值给parameter。终究替换为parameter的值。 ${parameter:?word} 如果parameter没有设置或为空,把word输出到stderr,否则替换为parameter的值。 ${parameter:offset} 扩大为parameter中从offset开始的子字符串。 ${parameter:offset:length} 扩大为parameter中从offset开始的长度不超过length的字符。

例如:

$ foo=hellobash $ echo ${foo} hellobash $ echo ${foo:-newword} hellobash $ echo ${foo} hellobash $ echo ${foo:+newword} newword $ echo ${foo} hellobash $ echo ${foo:?newword} hellobash $ echo ${foo} hellobash $ echo ${foo:=newword} hellobash $ echo ${foo} hellobash $ unset foo $ echo ${foo} $ echo ${foo:-newword} newword $ echo ${foo} $ echo ${foo:+newword} $ echo ${foo} $ echo ${foo:?newword} bash: foo: newword $ echo ${foo} $ echo ${foo:=newword} newword $ echo ${foo} newword $ echo ${foo:2} wword $ echo ${foo:2:3} wwo

有时候,冒号命令用作占位符,甚么事情也不做,其退出状态为0,以下:

$ : $ echo $? 0 $ : abc $ echo $? 0

在shell扩大的模式匹配中,也用到了冒号,用法以下:

[[:class:]] 通过class指定字符种别,class可以是POSIX标准中的以下关键字:alnum、alpha、ascii、blank、cntrl、digit、graph、lower、print、punct、space、upper、word、xdigit,其中word表示大小写字母、数字和下划线。

例以下面例子中的字符串替换(数字替换为0,小写字母替换为x,大写字母替换为X):

var=helloBASH123 $ echo $var helloBASH123 $ echo ${var//[[:digit:]]/0} helloBASH000 $ echo ${var//[[:lower:]]/x} xxxxxBASH123 $ echo ${var//[[:upper:]]/X} helloXXXX123

在shell的数学运算中,支持像其它编程语言1样的3元运算符,其中就用到了冒号,以下:

$ var=100 $ echo $var 100 $ (($var>100?var++:var--)) ~$ echo $var 99

另外,在shell中冒号还用作变量间的分隔符,例如环境变量PATH。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读