【Bash百宝箱】shell内建命令之冒号
来源:互联网 发布:编程好看的字体 编辑:程序博客网 时间:2024/06/05 07:26
在shell中,冒号“:”是一个内建(builtin)命令,格式如下:
: [arguments]
冒号命令本身没什么副作用,使用场景有限,一般用于参数扩展,有以下几种用法:
${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 $varhelloBASH123$ echo ${var//[[:digit:]]/0}helloBASH000$ echo ${var//[[:lower:]]/x}xxxxxBASH123$ echo ${var//[[:upper:]]/X}helloXXXX123
在shell的数学运算中,支持像其它编程语言一样的三元运算符,其中就用到了冒号,如下:
$ var=100$ echo $var100$ (($var>100?var++:var--))~$ echo $var99
另外,在shell中冒号还用作变量间的分隔符,例如环境变量PATH。
1 0
- 【Bash百宝箱】shell内建命令之冒号
- 【Bash百宝箱】shell内建命令之句点与source
- 【Bash百宝箱】shell内建命令之break与continue
- 【Bash百宝箱】shell内建命令之cd、getopts
- 【Bash百宝箱】shell内建命令之hash
- 【Bash百宝箱】shell内建命令之times、umask、unset
- 【Bash百宝箱】shell内建命令之test
- 【Bash百宝箱】shell内建命令之trap
- 【Bash百宝箱】shell内建命令之alias与unalias
- 【Bash百宝箱】shell内建命令之builtin、command、caller
- 【Bash百宝箱】shell内建命令之declare、typeset、local
- 【Bash百宝箱】shell内建命令之echo、printf
- 【Bash百宝箱】shell内建命令之read、readarray、mapfile
- 【Bash百宝箱】shell内建命令之bind、enable、ulimit
- 【Bash百宝箱】shell内建命令之set、shopt
- 【Bash百宝箱】shell内建命令之echo、printf
- 【Bash百宝箱】shell内建命令之eval、exec、exit、export
- 【Bash百宝箱】shell内建命令之pwd、readonly、return、shift
- C++模板实现事件处理器中的“通用成员函数指针”的调用(一)
- easyui-textbox设置背景色的问题
- Python 第一课
- Android加载大图片时的OOM异常及解决(图片的二次采样)
- Linux(6)RedHat7 基本命令五-hwclock(clock)命令详解
- 【Bash百宝箱】shell内建命令之冒号
- 在代码中写view 的长宽高等
- 如何调用TUIO中的源码
- 在ubuntu中安装Samba服务器
- 【HDU 5889】Barricade(最短路+最小割)
- RadioButton单选按钮
- 【Bash百宝箱】shell内建命令之句点与source
- Hibernate的批量处理
- jquery中常用方法