• shell 冒号


    : ${TEST_LOOP:='1'}

    如果不在前面加上:(冒号)命令,那么就会把${TEST_LOOP:='1'}本身当做一个命令来执行,报错是肯定的。

    [root@node56 ~]# : abc=1234 
    [root@node56 ~]# echo $abc 

    [root@node56 ~]# : ${abc:=1234} 
    [root@node56 ~]# echo $abc    
    1234

    [root@node56 ~]# ${abc:=1234} 
    -bash: 1234: command not found

    空命令[冒号]. 这个命令意思是空操作(即什么操作也不做). 它一般被认为是和shell的内建命令true是一样的。冒号":" 命令是Bash自身内建的, 它的退出状态码是真(即0)。

    1         : Read gave us ifname = $ifname
    2         read inet addr junk
    3         : Read gave us inet = $inet addr = $addr

    same as "#" to put the comments or comment out the codes  .
    advantage to use ": "  for multiple line comment out  .

    : '
    code1
    code2
    code3   
    '

    like C use "/* */" for comment out

    冒号(null command [colon])。

    空命令,这个命令什么都不做,但是有返回值,返回值为0(即:true)。这个命令的作用非常奇妙。

    1. 可做while死循环的条件;

    2. 在if分支中作为占位符(即某一分支什么都不做的时候);

    3. 放在必须要有两元操作的地方作为分隔符,如: ${username=`whoami`}

    4. 在参数替换中为字符串变量赋值,在重定向操作(>)中,把一个文件长度截断为0(:>>这样用的时候,目标存在则什么都不做),这个只能在普通文件中使用,不能在管道,符号链接和其他特殊文件中使用;

    5. 甚至你可以用来注释(#后的内容不会被检查,但:后的内容会被检查,如果有语句如果出现语法错误,则会报错);

    6. 你也可以作为域分隔符,比如环境变量$PATH中,或者passwd中,都有冒号的作为域分隔符的存在;

    7. 你也可以将冒号作为函数名,不过这个会将冒号的本来意义转变(如果你不小心作为函数名,你可以使用unset -f : 来取消function的定义)。

  • 相关阅读:
    什么是 DLL?
    如何用vc创建和读取xml文件??
    VC中调用 Excel 的总结
    Excel.cpp和Excel.h
    SQL中也可以用格式字符串定制日期转字符串
    REVERT权限切换
    透明数据加密
    批量恢复数据库
    FILESTREAM
    eclipse Tomcat热启动maven install Jrebel
  • 原文地址:https://www.cnblogs.com/idyllcheung/p/10224933.html
Copyright © 2020-2023  润新知