精华内容
下载资源
问答
  • shell 冒号用法
    2019-09-19 17:10:22

    冒号在Linux中是一个空命令,可以认为与shell的内建命令true相同,它的返回值是0.
    在while循环中

    while :

    while true

    的作用是等效的


    在 if/then 中可作为占位符

    if conditions
    then:  #什么都不做
    else
    take action 
    fi

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

    更多相关内容
  • 前言 本文主要是参考了鸟哥写的...Shell冒号在变量赋值时的各种特殊用法 变量设定方式 str变量没有设定时 str为空字符串时 str已经设定为非空字符串时 var=${str-expr} var=expr var="" var=$str var...

    前言

    • 本文主要是参考了鸟哥写的《鸟哥的Linux私房菜》。因为总是在各种脚本中见到:-的用法而只是了解其大概含义,所以翻阅了相关资料,编写此博文以作记录

    Shell中冒号在变量赋值时的各种特殊用法

    变量设定方式str变量没有设定时str为空字符串时str已经设定为非空字符串时
    var=${str-expr}var=exprvar=""var=$str
    var=${str:-expr}var=exprvar=exprvar=$str
    var=${str+expr}var=""var=exprvar=expr
    var=${str:+expr}var=""var=""var=expr
    var=${str=expr}str=expr
    var=expr
    str 不变
    var=""
    str 不变
    var=$str
    var=${str:=expr}str=expr
    var=expr
    str=expr
    var=expr
    str 不变
    var=$str
    var=${str?expr}expr 输出至 stderrvar=""var=$str
    var=${str:?expr}expr 输出至 stderrexpr 输出至 stderrvar=$str

    End~

    展开全文
  • 您可能感兴趣的文章:shell脚本中28个特殊字符的作用简明总结Shell命令行中特殊字符与其转义详解(去除特殊含义)Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍Shell脚本中的位置变量参数(特殊字符)实例...
  • Shell中的冒号 :

    2021-05-13 23:40:40
    用途说明我们知道,在Linux系统中,冒号(:)常用来做路径的分隔符(PATH),数据字段的分隔符(/etc/passwd)等。其实,冒号(:)在Bash中也是一个内建命令,它啥也不做,是个空命令、只起到占一个位置的作用,但有时候确实...

    {str:=expr}如果变量str不为空,${str:=expr}就等于str的值,若str为空,就把expr的值赋值给str。

    用途说明

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

    man : 写道

    : [arguments]

    No effect; the command does nothing beyond expanding arguments and performing any specified redirections. A zero exit code is returned.

    常用参数

    格式::

    ·啥也不做,只起到占位符的作用。比如在编写脚本的过程中,某些语法结构需要多个部分组成,但开始阶段并没有想好或完成相应的代码,这时就可以用:来做占位符,否则执行时就会报错。

    Bash代码 85663007_2.pngif [ "today" == "2011-08-29" ]; then

    :

    else

    :

    fi

    格式:: your comment here

    格式:# your comment here

    写代码注释(单行注释)。

    格式:: 'comment line1

    comment line2

    more comments'

    写多行注释。

    格式:: >file

    格式:>file

    清空文件file的内容。

    格式:: ${VAR:=DEFAULT}

    当变量VAR没有声明或者为NULL时,将VAR设置为默认值DEFAULT。如果不在前面加上:命令,那么就会把${VAR:=DEFAULT}本身当做一个命令来执行,报错是肯定的。

    使用示例

    示例一 参数扩展

    [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

    [root@node56 ~]#

    示例二 清空文件

    [root@node56 ~]# cat <<123.txt [root@node56 ~]# cat 123.txt Hello

    [root@node56 ~]# : >123.txt [root@node56 ~]# cat 123.txt

    [root@node56 ~]#

    示例三 脚本注释、占位符

    脚本test_colon.sh

    Bash代码 85663007_2.png#!/bin/sh

    : this is single line comment

    : 'this is a multiline comment,

    second line

    end of comments'

    if [ "1" == "1" ]; then

    echo "yes"

    else

    :

    fi

    [root@node56 ~]# ./test_colon.sh

    yes

    另外, : 有一个side-effect,就是 重定向:-bash-3.2$ : echo "this is a comment" > word-bash-3.2$ ls

    MakeFileFindtree word

    makefile中的冒号有很多用处:

    1.赋值的时候用;

    2.“:目标依赖关系

    3.还用于分隔不同的目录,如:

    SRC_PATH ?= .:..风格1: 递归扩展变量(recursively expanded variable)变量定义格式是,变量和值之间用等号,即 =例如:foo = $(bar)bar = $(ugh)ugh = Huh?all:;echo $(foo)将显示 Huh?再例如:CFLAGS = $(include_dirs) -Oinclude_dirs = -Ifoo -Ibar缺点是不能这么定义:CFLAGS = $(CFLAGS) -O ,将会死循环风格2: 简单扩展变量(simply expanded variables)变量定义格式是,变量和值之间用冒号等号,即 :=例如x := fooy := $(x) barx := later等价于:y := foo barx := later另外 ?= 含义为:没有定义则赋值FOO ?= bar等价于ifeq ($(origin FOO), undefined)FOO = barendif+= 是为变量后面追加字符变量替换$(var:a=b),是将 var 变量中每一个单词后面的 a 替换为 b$(var:suffix=replacement)等价于$(patsubst %suffix,%replacement,$(var))$(foo:%.o=%.c) ,由于出现了 %, 其功能和 patsubst 等价$(var:pattern=replacement)等价于$(patsubst pattern,replacement,$(var))风格1: 递归扩展变量(recursively expanded variable)变量定义格式是,变量和值之间用等号,即 =例如:foo = $(bar)bar = $(ugh)ugh = Huh?all:;echo $(foo)将显示 Huh?再例如:CFLAGS = $(include_dirs) -Oinclude_dirs = -Ifoo -Ibar缺点是不能这么定义:CFLAGS = $(CFLAGS) -O ,将会死循环风格2: 简单扩展变量(simply expanded variables)变量定义格式是,变量和值之间用冒号等号,即 :=例如x := fooy := $(x) barx := later等价于:y := foo barx := later另外 ?= 含义为:没有定义则赋值FOO ?= bar等价于ifeq ($(origin FOO), undefined)FOO = barendif+= 是为变量后面追加字符变量替换$(var:a=b),是将 var 变量中每一个单词后面的 a 替换为 b$(var:suffix=replacement)等价于$(patsubst %suffix,%replacement,$(var))$(foo:%.o=%.c) ,由于出现了 %, 其功能和 patsubst 等价$(var:pattern=replacement)等价于$(patsubst pattern,replacement,$(var))风格1: 递归扩展变量

    (recursively expanded variable)

    变量定义格式是,变量和值之间用等号,即 =

    例如:

    foo = $(bar)

    bar = $(ugh)

    ugh = Huh?

    all:;echo $(foo)将显示 Huh?再例如:CFLAGS = $(include_dirs) -Oinclude_dirs = -Ifoo -Ibar缺点是不能这么定义:CFLAGS = $(CFLAGS) -O ,将会死循环风格2: 简单扩展变量(simply expanded variables)变量定义格式是,变量和值之间用冒号等号,即 :=例如x := fooy := $(x) barx := later等价于:y := foo barx := later另外 ?= 含义为:没有定义则赋值FOO ?= bar等价于ifeq ($(origin FOO), undefined)FOO = barendif+= 是为变量后面追加字符变量替换$(var:a=b),是将 var 变量中每一个单词后面的 a 替换为 b$(var:suffix=replacement)等价于$(patsubst %suffix,%replacement,$(var))$(foo:%.o=%.c) ,由于出现了 %, 其功能和 patsubst 等价$(var:pattern=replacement)等价于$(patsubst pattern,replacement,$(var))将显示 Huh?

    再例如:

    CFLAGS = $(include_dirs) -O

    include_dirs = -Ifoo -Ibar

    缺点是不能这么定义:CFLAGS = $(CFLAGS) -O ,将会死循环风格2: 简单扩展变量(simply expanded variables)变量定义格式是,变量和值之间用冒号等号,即 :=例如x := fooy := $(x) barx := later等价于:y := foo barx := later另外 ?= 含义为:没有定义则赋值FOO ?= bar等价于ifeq ($(origin FOO), undefined)FOO = barendif+= 是为变量后面追加字符变量替换$(var:a=b),是将 var 变量中每一个单词后面的 a 替换为 b$(var:suffix=replacement)等价于$(patsubst %suffix,%replacement,$(var))$(foo:%.o=%.c) ,由于出现了 %, 其功能和 patsubst 等价$(var:pattern=replacement)等价于$(patsubst pattern,replacement,$(var))风格2: 简单扩展变量

    (simply expanded variables)

    变量定义格式是,变量和值之间用冒号等号,即 :=

    例如

    x := foo

    y := $(x) bar

    x := later

    等价于:

    y := foo bar

    x := later

    另外 ?= 含义为:没有定义则赋值

    FOO ?= bar

    等价于

    ifeq ($(origin FOO), undefined)

    FOO = bar

    endif

    += 是为变量后面追加字符变量替换$(var:a=b),是将 var 变量中每一个单词后面的 a 替换为 b$(var:suffix=replacement)等价于$(patsubst %suffix,%replacement,$(var))$(foo:%.o=%.c) ,由于出现了 %, 其功能和 patsubst 等价$(var:pattern=replacement)等价于$(patsubst pattern,replacement,$(var))变量替换

    $(var:a=b),是将 var 变量中每一个单词后面的 a 替换为 b

    $(var:suffix=replacement)

    等价于

    $(patsubst %suffix,%replacement,$(var))

    $(foo:%.o=%.c) ,由于出现了 %, 其功能和 patsubst 等价$(var:pattern=replacement)等价于$(patsubst pattern,replacement,$(var))$(var:pattern=replacement)

    等价于

    $(patsubst pattern,replacement,$(var))

    关于第一种用法:

    Makefile里的=显然是赋值的用法

    展开全文
  • 我们知道,在Linux系统中,冒号(:)常用来做路径的分隔符(PATH),数据字段的分隔符(/etc/passwd)等。其实,冒号(:)在Bash中也是一个内建命令,它啥也不做,是个空命令、只起到占一个位置的作用,但有时候确实需要它。...

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

    man :

    No effect; the command does nothing beyond expanding arguments and performing any specified redirections. A zero exit code is returned.

    常用参数

    啥也不做,只起到占位符的作用。比如在编写脚本的过程中,某些语法结构需要多个部分组成,但开始阶段并没有想好或完成相应的代码,这时就可以用:来做占位符,否则执行时就会报错。

    Bash代码

    if [ "today" == "2011-08-29" ]; then

    :

    else

    :

    fi

    写代码注释

    单行注释

    : your comment here

    # your comment here

    多行注释

    : 'comment line1

    comment line2

    more comments'

    清空文件file的内容

    : >file

    >file

    默认参数

    : ${VAR:=DEFAULT}

    当变量VAR没有声明或者为NULL时,将VAR设置为默认值DEFAULT。如果不在前面加上:命令,那么就会把${VAR:=DEFAULT}本身当做一个命令来执行,报错是肯定的。

    使用示例

    示例一 参数扩展

    [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

    [root@node56 ~]#

    示例二 清空文件

    [root@node56 ~]# cat <<123.txt

    [root@node56 ~]# cat 123.txt

    Hello

    [root@node56 ~]# : >123.txt

    [root@node56 ~]# cat 123.txt

    [root@node56 ~]#

    有关shell中冒号的特殊用法

    有关shell中冒号的特殊用法,供朋友们参考. : ${VAR:=DEFAULT} 当变量VAR没有声明或者为NULL时,将VAR设置为默认值DEFAULT.如果不在前面加上:命令,那么就会把${VA ...

    shell中测试命变量是否已经定义

    (1)sehll实例 # cat subshell #!/bin/bash if (set -u; : $var); then #冒号与$间有空格 echo "Variable is set ...

    shell中for循环

    shell中for循环总结 最常用的就是遍历操作某一类文件,比如批量建索引. for i in `ls` do samtools faidx $i done 注意:for末尾不需要冒号(:),循环的代 ...

    脚本乐园 Shell中命令行选项和参数的处理

    在Linux的Shell中怎样处理tail -n 10 access.log这样的命令行选项呢?这是被别人问起的一个问题,好好学习了一下,进行总结如下:在bash中,可以用以下三种方式来处理命令行参数 ...

    shell中常用的特殊符号

    在shell中常用的特殊符号罗列如下: # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `co ...

    Shell中特殊符号

    http://blog.chinaunix.net/u1/53027/showart.php?id=482234 在shell中常用的特殊符号罗列如下:# ;    ;;       .       ...

    shell之冒号的作用

    冒号:   :在shell中是一种命令,意思是总是为真,但是却不做任何操作,即总是为真的空命令 eg:   [root@localhost ~]# ${abc:=t1}-bash: t1: comma ...

    Linux shell中的一个问题 &dollar;&lbrace;&rcub;带正则匹配的表达式

    目前在准备龙芯项目的PMON,在研究其编译过程的时候,看到一些make 语句,百思不得其解.后来在shell编程中看到一点资料,牵扯到Shell中的正则表达式.故记录下来,以备后来查阅. 问题: 在某 ...

    shell 中的特殊符号的含义

    来源:http://blog.sina.com.cn/s/blog_62a151be0100x9rn.html 第四章 基本功 - 特殊符号 学习撰写 script 最迅速的捷径是观摩别人的 scri ...

    随机推荐

    Rubinius 2&period;0 发布,Ruby 虚拟机

    Rubinius 2.0 发布了,官方发行说明请看这里. Rubinius是一个运行Ruby程序的虚拟机,其带有Ruby的核心库. Rubinius的设计决定了其调试功能的强大,使得在运行时常规的Ru ...

    添加数据源,管理工具--数据源&lpar;ODBC&rpar;,点击添加不显示该驱动

    win7系统下或者64位系统下,安装完mysql-connector-odbc驱动后,直接进入:管理工具--数据源(ODBC),点击添加不显示该ODBC驱动 问题解决如下: C:\Users\Admi ...

    Sass简介&comma;安装环境,Sass的语法格式及编译调试

    什么是 CSS 预处理器? 定义:CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进 ...

    Ubuntu 14&period;04—Anaconda 相关

    Anaconda 使用国内镜像: https://keyunluo.github.io/2016/07/17/2016-07-17-anaconda-python.html Anaconda下的 De ...

    数据库介绍(MySQL安装 体系结构、基本管理)

    第1章 数据库介绍及mysql安装 1.1 数据库简介 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增.截取.更新.删除等操作. 所谓“数据库”系以一定方式 ...

    解锁技能:sass &plus; node-sass多页面应用编译(转载)

    传送门:https://blog.csdn.net/wx11408115/article/details/78023466

    7、zabbix使用进阶&lpar;03&rpar;

    节知识点: zabbix自动发现 web监控 zabbix自动发现   官网:https://www.zabbix.com/documentation/4.0/zh/manual/discovery/ ...

    maven基础知识汇总

    maven的dependency中scope=compile和provided的区别 对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artif ...

    BETA-4

    前言 我们居然又冲刺了·四 团队代码管理github 站立会议 队名:PMS 530雨勤(组长) 过去两天完成了哪些任务 整理了一丢丢代码 接下来的计划 认真复习准备考试,挤时间把软工搞定 还剩下哪些 ...

    展开全文
  • shell中的双冒号

    千次阅读 2016-03-29 16:03:23
    shell中经常有“ echo ${a::1}”这种表达式。 其实就是相当于“echo ${a:0:1}, 表示打印字符串种的第0个到第一个字母。 类似于其它语言的substring(a, 0, 1)。  双冒号,只是省略了其中的”0“, 初看会让人迷惑...
  • 冒号是bash shell中一个内建命令,有多种用法 1、空命令,返回永真 就是什么也不做,所以返回码永远都是0。 (1)用于循环条件中表示永真 #!/bin/bash i=0 while : do if ((i >= 10)) then break fi ...
  • shell用法大全

    2021-12-18 14:26:52
    一般与 sort 命令结合使用 变量 定义变量 在shell中,定义变量直接就是 name=value shell中没有变量类型,都是字符串 假如要把执行命令的标准输出流弄到变量中去 name=`命令` 例子: name=`ls` 就是将ls输出的内容...
  • Bash中冒号(:)的基本用法:(1)语法占位符,什么都不做就像Python的pass语句,放在那里没有用,但是不放在那里就有语法错误。isInteractiveMode(){:}这样,脚本在执行的时候,就不会出现语法错误。我们可以以后再慢慢...
  • 【Bash百宝箱】shell内建命令之冒号

    千次阅读 2016-09-19 20:29:14
    shell中,冒号“:”是一个内建(builtin)命令,格式如下:: [arguments]冒号命令本身没什么副作用,使用场景有限,一般用于参数扩展,有以下几种用法:${parameter:-word} 如果parameter没有设置或者为空,替换为...
  • 有关shell冒号的特殊用法,供朋友们参考。 : ${VAR:=DEFAULT} 当变量VAR没有声明或者为NULL时,将VAR设置为默认值DEFAULT。如果不在前面加上:命令,那么就会把${VAR:=DEFAULT}本身当做一个命令来执行,报错是...
  • 'getopt'与'getopts'类似,不过'getopts'只能处理短选项,'getopt'则能处理短选项和长选项。所谓的短选项就是类似下面这样的选项:-a而下面这样的则是长...需要事先说明的一点是,'getopt'不是Shell内建的命令,而是...
  • 最后我们看一下,这个列子中使用的一个比较不常用的符号 : (冒号)。在Bash里边:是一个占位符。是一个不执行的命令。这个命令对于命令输入不挑食,可以作为注释方法。 没有输出,可以对文件进行清空。 : > test....
  • 在bash中使用:-(冒号)

    2021-05-16 06:51:56
    例子:$str=$echo"${str:-default}"default和类似的扩展使用:=,:+和:?所有的食物都有两种味道:有结肠的也有没有结肠的。不同之处在于带着冒号输入为“NULL”。或未设定“,鉴于无冒号,它只是“NULL...
  • 这个是代码开发风格,其实也...这个是根据Google的Shell开发规范进行定义的。 参考: https://google.github.io/styleguide/shell.xml?showone=Function_Names#Function_Names http://stackoverflow.org.cn/...
  • 在Linux系统中,冒号(:)常用来做路径的分隔符(PATH),数据字段的分隔符(/etc/passwd)等。其实,冒号(:)在Bash中也是一个内建命令,它啥也不做,是个空命令、只起到占一个位置的作用,但有时候确实需要它。当然,它也...
  • shell getopts用法详解

    2021-01-14 09:52:15
    本文链接:https://blog.csdn.net/u012703795/article/details/46124519获取UNIX类型的选项:unix有一个优点就是标准UNIX命令在执行时都具有相同的命令行格式:command -options parameters如果在执行Shell程序也采用...
  • Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可以是交互式也可以是非交互式的
  • cut命令主要是接受三个定位方法:第一,字节(bytes),用选项-b第二,字符(characters),用选项-c第三,域(fields),用选项-f3 以“字节”定位,给个最简单的例子?举个例子吧,当你执行ps命令时,...
  • 主要介绍了shell字符截取命令之cut命令的实例详解的相关资料,希望通过本文大家能够掌握这部分内容,需要的朋友可以参考下
  • shell 命令getopts用法

    2020-12-24 14:25:06
    shell脚本常见sh test.sh-m 2 -d 3的写法事例脚本:#!/bin/bashwhile getopts ":a:b:c:" arg #选项后面的冒号表示该选项需要参数doecho "arg":$argcase $arg ina)echo "a's arg:$OPTARG --- $OPTIND" #参数存在$...
  • Shell命令行参数解析getopts/getopt用法详解 在Linux bash中,可以用以下三中方式解析命令行参数: 直接处理:使用$1、$2、$3… 进行解析 getopts:短选项的情况,例如:-n 10 -f file.txt getopt:处理短选项或者...
  • [shell]截取字符串

    千次阅读 2021-05-15 23:25:30
    @H_404_0@ shell中截取字符串的方法有很多中,${expression}一共有9种使用方法。${parameter:-word}${parameter:=word}${parameter:?word}${parameter:+word}上面4种可以用来进行缺省值的替换。${#parameter}上面...
  • shell 脚本getopts用法总结

    千次阅读 2020-12-10 09:08:30
    getopts是shell命令行参数解析工具,意在从shell ...如果对应的参数后面还跟随一个值,则在相应的optstring后面加冒号。比如a:fs表示a参数后面会有一个值出现,-a value的形式。另外,getopts执行匹配到a的时候,会
  • shell getopts 用法

    2021-03-04 10:31:04
    shell getopts 用法 c语言里面有个getopt_long,可以获取用户在命令下的参数,然后根据参数进行不同的提示或者不同的执行。 在shell中同样有这样的函数或者用法吧,在shell里面是getopts,也有一个getopt是一个...
  • 主要介绍了Linux Shell脚本系列教程(四):使用函数添加环境变量,本文对环境变量的一知识作了介绍,并给出普通添加环境变量和使用函数添加环境变量的方法,需要的朋友可以参考下
  • 本文介绍了linux shell使用命令行选项与命令行参数的方法,在bash中,可以用以下三种方式来处理命令行参数,每种方式都有自己的应用场景
  • 用法: getopt 选项字符串 参数 getopt [options] [--] 选项字符串 参数 getopt [options] -o|--options 选项字符串 [选项] [--] 参数   解析命令选项。   选项: -a, --alternative 允许长选项以单个 - ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,814
精华内容 15,925
关键字:

shell 冒号用法