Mryqu's Notes


  • 首页

  • 搜索
close

Shell参数扩展

时间: 2013-06-23   |   分类: Tool   Linux     |   阅读: 39 字 ~1分钟

在hadoop-env.sh中,有如下语句:

export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}

这种用法在Shell Parameter Expansion中进行了详尽的介绍,系统学习一下。 Bash中的$符号的作用是参数替换,将参数名替换为参数所代表的值。对于$来说,大括号是可选的,即$ABC和${ABC}代表同一个参数。但是它可以防止变量被错误解析,比如:${hello}world、${arr[1]}。 Shell参数扩展

参数扩展

下列Bash对参数的测试项为未设置和null。如果略掉冒号,则仅测试未设置。

|表达式|含义 |—– |${parameter:-word}|如果parameter没有被声明或者其值为空的话,则表达式替换成word;否则替换成parameter的值。 |${parameter:=word}|如果parameter没有被声明或者其值为空的话,则parameter设为word之后表达式返回parameter的值;否则替换成parameter的值。 |${parameter?word}|如果parameter没有被声明或者其值为空的话,则word被写往标准错误输出和Shell,非可交互的情况下退出;否则替换成parameter的值。 |${parameter:+word}|如果parameter没有被声明或者其值为空的话,则不进行替换;否则替换成parameter的值。 |${!varprefix*}
${!varprefix@}|匹配之前所有以varprefix开头进行声明的变量 |${!name[@]}
${!name[*]}|如果name是数组对象,返回数组下标列表;如果name以设置但不为数组对象,返回0;否则返回null。

Shell参数扩展 Shell参数扩展

字符串操作

|表达式|含义 |—– |${% raw %}{#{% endraw %}parameter}|parameter的长度。 |${parameter:offset}|在parameter中,从位置offset开始提取子串。 |${parameter:offset:length}|在parameter中,从位置offset开始提取长度为length的子串。 |${parameter#word}
${parameter##word}|从头开始扫描parameter对应值,将匹配word正则表达式的字符删除掉#为最短匹配,##为最长匹配。 |${parameter%word}
${parameter%%word}|从尾开始扫描parameter对应值,将匹配word正则表达式的字符删除掉%为最短匹配,%%为最长匹配。 |${parameter/pattern/string}
${parameter//pattern/string}|将parameter对应值的pattern代替为string。/表示只替换一次,//表示全部替换。 |${parameter^pattern}
${parameter^^pattern}|如果pattern是单个字符,将parameter对应值中匹配pattern的字符转换为大写。^表示只转换匹配的首字母,^^表示全部转换。 |${parameter,pattern}
${parameter,,pattern}|如果pattern是单个字符,将parameter对应值中匹配pattern的字符转换为小写。,表示只转换匹配的首字母,,,表示全部转换。

Shell参数扩展 Shell参数扩展

标题:Shell参数扩展
作者:mryqu
声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!

#bash# #shell# #parameter# #expansion#
MySQL、Postgres、Oracle、SQL server、DB2、Teradata、Netezza数据类型比较
Java对象的内存使用量分析
  • 文章目录
  • 站点概览

Programmer & Architect

662 日志
27 分类
1472 标签
GitHub Twitter FB Page
    • 参数扩展
    • 字符串操作
© 2009 - 2023 Mryqu's Notes
Powered by - Hugo v0.120.4
Theme by - NexT
0%