美文网首页
shell参数扩展

shell参数扩展

作者: 037251a7c483 | 来源:发表于2017-03-14 22:09 被阅读23次
  • ${parameter:-word}
      如果parameter没有设置或者为null,则整个参数扩展(这里为 ${parameter:-word})被赋予word的值,但是word值不会赋给parameter。
[root@logan ~]# var=""
[root@logan ~]# echo ${var:-"word"}
word
[root@logan ~]# echo ${var:-"word"}
word

[root@logan ~]# echo $var

[root@logan ~]# 
  • ${parameter:=word}——取代默认值
      如果parameter 不存在,则word的值会赋给整个扩展(${parameter:=word})并赋值给parameter。注意这里和-word的却别
[root@logan ~]# var=""
[root@logan ~]# echo ${var}

[root@logan ~]# echo ${var:="hello"}
hello
[root@logan ~]# echo ${var}
hello
  • ${parameter:?word}
      如果parameter为Null或者没有定义,则显示错误信息——word被写入被写入标准错误
[root@logan ~]# echo $var
hello
[root@logan ~]# echo ${var:?'error'}
hello
[root@logan ~]# var=""
[root@logan ~]# echo ${var:?'error'}
-bash: var: error
  • ${parameter:+word}
      使用备用值。如果parameter为null或未设置,则不进行替换;否则word值会赋给整个参数扩展(这里为${parameter:+word}),同时word的值也会赋给parameter
[root@logan ~]# echo $var

[root@logan ~]# echo ${var:+'error'}

[root@logan ~]# var="hello"
[root@logan ~]# echo ${var:+'error'}
error
  • ${parameter:offset}
      结果为offset偏移之后的字符(不包含offset位)。如offset为1,则第一个输出为除去第一个字符之后的所有字符。注意:字符从1开始编号
[root@logan ~]# echo $var
123456789
[root@logan ~]# echo ${var:1}
23456789
[root@logan ~]# echo ${var:2}
3456789
[root@logan ~]# echo ${var:8}
9
  • ${parameter:offset:length}
      输出为offset偏移之后的length个字符。
[root@logan ~]# echo $var
123456789
[root@logan ~]# echo ${var:1:5}
23456
[root@logan ~]# echo ${var:3:6}
456789


# length超出范围则用取长度
[root@logan ~]# echo ${var:3:7}
456789
  • ${#parameter}
      输出parameter 字符的长度

  • ${parameter#word} 和 ${parameter##word}
      都是移除匹配的前缀模式

[root@logan ~]# echo ${var}
123456789
[root@logan ~]# echo ${var#'123'}
456789
[root@logan ~]# echo ${var#'456'} 
123456789
  • ${parameter%word} 和 ${parameter%%word}
      移除匹配的后缀模式
[root@logan ~]# echo $var
123456789
[root@logan ~]# echo ${var%"9"}
12345678
[root@logan ~]# echo ${var%"789"}
123456
  • ${parameter/pattern/string}
      如果在parameter字符中,如果pattern能与其中的字符匹配,则匹配的这些字符用string代替。但是只会代替最先匹配到的字符(匹配顺序是从左往右匹配)
[root@logan ~]# var="123456789"
[root@logan ~]# echo ${var/"1"/"test"}
test23456789

[root@logan ~]# echo ${var/"1"/"test"}
test23456789
[root@logan ~]# var="123123456789789"
[root@logan ~]# echo ${var/"1"/"test"}
test23123456789789

# 这列可以看出匹配顺序
[root@logan ~]# echo ${var/"789"/"test"}
123123456test789

相关文章

  • shell参数扩展

    ${parameter:-word}如果parameter没有设置或者为null,则整个参数扩展(这里为 ${pa...

  • shell参数扩展${}

    看别人的shell脚本看到了陌生的"${}"用法,尽管能看出来在脚本中是做什么的,还是去学习一下,找到了参考中的那...

  • Shell Bash 中的参数扩展

    对于访问 $9 之后的位置参数也同样需要使用大括号,比如: 间接参数扩展: 上述语句中,被引用的参数不是 PARA...

  • Ubuntu16.04+Gnome3

    GNOME优化工具 GNOME Tweak Tool GNOME Shell扩展站点 GNOME Shell扩展站...

  • Shell脚本基础

    1.Shell变量 2.Shell字符串 3.Shell数组 4.Shell注释 5.Shell参数传递 参数处理...

  • Linux常用命令汇总之内建命令

    : 扩展参数列表,执行重定向操作 . 读取并执行指定文件中的命令(在当前shell环境中) alias 为指定命令...

  • gnome tiling 窗口

    安装扩展 material shell

  • Linux常用通配符与参数扩展

    通配符与参数扩展 通配符:*、?、!、()、[]、{}参数扩展:%、%%、#、##、/、//、:、:: 通配符 字...

  • shell脚本编程

    shell脚本的扩展名为 .sh #! 是一个约定的标记,后面的参数/bin/bash告诉系统这个脚本需要什么解释...

  • shell内建命令一览

    命令说明:扩展参数列表,执行重定向操作.读取并执行指定文件中的命令(在当前 shell 环境中)alias为指定命...

网友评论

      本文标题:shell参数扩展

      本文链接:https://www.haomeiwen.com/subject/imocnttx.html