在Linux系统中,冒号(:)常用来做路径的分隔符(PATH),数据字段的分隔符(/etc/passwd)等。其实,冒号(:)在Bash中也是一个内建命令,它啥也不做,是个空命令、只起到占一个位置的作用,但有时候确实需要它。当然,它也有它的用途的,否则没必要存在。在·Linux的帮助页中说它除了参数扩展和重定向之外不产生任何作用。

gnu 帮助:http://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins

冒号(:)的作用

1)空命令。

2)参数扩展。

3)重定向。

4)当注释使用。

理解冒号(:)

1)理解空命令。空命令就是什么也不做,所以返回码永远都是0。虽说是空命令,但仍是命令,就具备一般命令应有的特征,可以象一般命令一样使用。如

1 [root@localhost test]# :2 [root@localhost test]# echo $?

3 0

4 [root@localhost test]#

可以直接在console中执行。返回码为0。

利用这一特性,:可以当true使用。如用在while等循环体中的条件判断。

2)理解参数扩展。

冒号引起的参数扩展,意思是将参数的值替换为新的值。一般有以下几种参数扩展用法:

1 ${parameter:-word} 如果parameter没有设置或者为空,替换为word;否则替换为parameter的值2 ${parameter:+word} 如果parameter没有设置或者为空,不进行任何替换;否则替换为word。3 ${parameter:=word} 如果parameter没有设置或者为空,把word赋值给parameter。实际parameterd的值真的被替换了,这就是=号的意思。不能用这种方式指派位置参数或特殊参数的值。4 ${parameter:?word} 如果parameter没有设置或者为空,把word输出到stderr,否则替换为parameter的值。

-、+、? 实际parameter的值并不被修改,扩展只是临时显示成word的值。准确的讲,扩展实际替换的是参数的显示,而不是参数的定义。只有=,才是替换参数的定义。5 ${parameter:offset} 扩展为parameter中从offset开始的子字符串。6 ${parameter:offset:length} 扩展为parameter中从offset开始的长度不超过length的字符。原文:https://blog.csdn.net/ieearth/article/details/52589020

* word前的“-”可以理解为“没定义,则替换成word”;“+”可以理解为“有定义,则替换成word”。

* word前的“?”可以理解为“参数到底定义了没,没定义,把word当错误消息打印出来。”

$ 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---------------------以上例子转自https://blog.csdn.net/ieearth/article/details/52589020

三元运算符

1 $ var=100

2 $ (($var>100?var++:var--))

3)重定向

1 : > test.file

2

3 cat test.file

cat 文件,什么也没有。

4)当注释用

使用冒号还可以用作注释行的开始,但是如果有语法错误,仍将报错,这一点与使用#号不同。如:

1 [root@localhost test]# cat test.sh

2

3 fun()4 {5 echo 1222

6 : cccccc7 # llllll8 echo 222221

9 }10

11 fun12

13 [root@localhost test]# sh test.sh

14 1222

15 222221

linux 冒号命令,Linux Shell 内建命令:冒号(:)相关推荐

  1. linux shell 内建命令,什么是Bash Shell的内建(build in)命令

    1.什么是build in命令: shell内建命令是指bash(或其它版本)工具集中的命令.一般都会有一个与之同名的系统命令,比如bash中的echo命令与/bin/echo是两个不同的命令,尽管他 ...

  2. 【Bash百宝箱】shell内建命令之builtin、command、caller

    1.builtin 在shell中,内建(builtin)命令builtin,格式如下: builtin shell-builtin [arguments] builtin命令用以执行shell的内建 ...

  3. Linux Shell 内建命令 : builtin 命令详解

    builtin命令用于执行指定的shell内部命令,并返回内部命令的返回值.builtin命令在使用时,将不能够再使用Linux中的外部命令.当系统中定义了与shell内部命令相同的函数时,使用bui ...

  4. linux模块builtin是什么意思,使用linux的builtin命令执行bash内建命令

    使用linux的builtin命令执行bash内建命令 发布时间:2020-07-17 09:07:55 来源:亿速云 阅读:69 作者:清晨 栏目:服务器 这篇文章将为大家详细讲解有关使用linux ...

  5. (转)cd命令为何要实现成shell内建命令

    2019独角兽企业重金招聘Python工程师标准>>> 如果不使用内建命令而是fork出一个子进程并且在子进程中执行的话,不会改变父环境的路径. 因为执行结束了又回到了父shell环 ...

  6. 【Bash百宝箱】shell内建命令之declare、typeset、local

    1.declare(typeset) 在shell中,内建(builtin)命令declare与typeset用法相同,格式如下: declare [-aAfFgilnrtux] [-p] [name ...

  7. Linux Shell 内建命令 : sh命令详解

    sh命令是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取.通过用户输入命令,和内核进行沟通!Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个 ...

  8. 【Bash百宝箱】shell内建命令之echo、printf

    原文地址:http://blog.csdn.net/iEearth/article/details/52640972 1.echo 在shell中,内建(builtin)命令echo,格式如下: ec ...

  9. shell内建命令--Linux

    exec命令()取代当前shell find ./ -name "*.txt" -exec ls -al {} \; find ./ -name "*.txt" ...

最新文章

  1. .net编写抽奖的文档_使用开源文档工具docsify,用写博客的姿势写文档
  2. python 执行shell命令行效率提升_在python脚本中执行shell命令的方法
  3. 杭电oj java printf_杭电oj1042题大数,java,百思不得其解为何WA,求指教
  4. 集群搭建:CentOS 7 模板机封装、配置静态 IP、简单优化
  5. 远程控制漏洞CNVD-2022-10270/CNVD-2022-03672 向日葵RCE复现与解决
  6. .net core自定义高性能的Web API服务网关
  7. c#中struct和class的区别
  8. Proxy 对象简介
  9. 《白帽子讲web安全》第一篇 世界观安全
  10. CCNA考试题库中英文翻译版及答案6
  11. 检查服务器端口占用,服务器中如何检查端口是否开放
  12. python基础学习--猜拳游戏
  13. EFI、UEFI、MBR、GPT的区别
  14. 修改手机屏幕刷新率_手机屏幕刷新率那点事儿!
  15. 2022年全球及中国叔十二烷基硫醇行业头部企业市场占有率及排名调研报告
  16. Android Studio运行app启动模拟器一直卡在“Wating for target device to come online”的解决办法
  17. 杭电考研经验贴———报考计算机专业,慎重!!!
  18. 【笔记】编译原理——第三章 词法分析
  19. python实用案例题
  20. 华为诺亚方舟实验室招聘研究类实习生(内推)

热门文章

  1. 给每一个没写完作业却毫不顾忌地玩游戏的学生,请静下心来看一看
  2. OpenCV在笔记本上打不开摄像头的问题
  3. 最快速的Android开发环境搭建ADT-Bundle及Hello World
  4. petshop详解之六:PetShop之表示层设计
  5. 解决问题:TypeError: longestCommonPrefix() missing 1 required positional argument: 'strs'
  6. 1124:成语接龙 dfs+一维数组保存结果
  7. MySql基础,MySql表的基本操作
  8. HDU 4859-海岸线(网络流_最小割)
  9. js 四舍五入的方法
  10. Linux学习笔记(一、计算机基础)(持续更新)