`
字符串
  • 浏览: 36527 次
文章分类
社区版块
存档分类
最新评论

shell中的参数替换

 
阅读更多

常用类型参数替换

${parameter}            与$parameter相同, 也就是变量parameter的值.

在某些上下文中, ${parameter}很少会产生混淆.

 

${parameter-default}     如果变量parameter没被声明, 那么就使用默认值.

${parameter:-default}     如果变量parameter没被设置, 那么就使用默认值.

${parameter-default}和${parameter:-default}在绝大多数的情况下都是相同的.

只有在parameter已经被声明, 但是被赋null值得时候, 这个额外的:才会产生不同

的结果(即此时前者不会输出,后者可以输出).

 

${parameter=default}     如果变量parameter没声明, 那么就把它的值设为default.

${parameter:=default}     如果变量parameter没设置, 那么就把它的值设为default.

这两种形式基本上是一样的. 只有在变量$parameter被声明并且被设置为null值的时候, :才会引

起这两种形式的不同.(如上边所示)

 

${parameter+alt_value}     如果变量parameter被声明了, 那么就使用alt_value, 否则就使用

null字符串.

${parameter:+alt_value}    如果变量parameter被设置了, 那么就使用alt_value, 否则就使用

null字符串.

这两种形式绝大多数情况下都一样. 只有在parameter被声明并且设置为null值的时候, 多出来的

这个:才会引起这两种形式的不同(即后者不会输出).

 

${parameter?err_msg}     如果parameter已经被声明, 那么就使用设置的值, 否则打印err_msg

错误消息.

${parameter:?err_msg}    如果parameter已经被设置, 那么就使用设置的值, 否则打印

err_msg错误消息.

这两种形式绝大多数情况都是一样的. 和上边所讲的情况一样, 只有在parameter被声明并设置为

null值的时候, 多出来的:才会引起这两种形式的不同.

 

变量长度/子串删除

${#var}

字符串长度(变量$var得字符个数). 对于array来说, ${#array}表示的是数组中第一个元素的长度.

例外情况:

${#*}和${#@}表示位置参数的个数.

对于数组来说, ${#array[*]}和${#array[@]}表示数组中元素的个数.

 

${var#Pattern}, ${var##Pattern}

从变量$var的开头删除最短或最长匹配$Pattern的子串.

 

${var%Pattern}, ${var%%Pattern}

从变量$var的结尾删除最短或最长匹配$Pattern的子串.

 

变量扩展/子串替换

这些结构都是从ksh中引入的.

${var:pos}

变量var从位置pos开始扩展(即pos之前的字符都丢弃).

${var:pos:len}

变量var从位置pos开始, 并扩展len个字符.

${var/Pattern/Replacement}

使用Replacement来替换变量var中第一个匹配Pattern的字符串.

${var//Pattern/Replacement}

全局替换. 所有在变量var匹配Pattern的字符串, 都会被替换为Replacement.

${!varprefix*}, ${!varprefix@}

匹配所有之前声明过的, 并且以varprefix开头的变量.

分享到:
评论

相关推荐

    shell脚本修改json中某个字段的值

    shell脚本修改json中某个字段的值 - 思路:通过awk来找到旧数据,然后用sed来替换旧数据

    Linux Shell 编程实战.zip

    Shell是Linux的外壳,是Linux的用户界面, Shell为用户提供了输入命令和参数并可得到命令执行结果的环境。用户对Shell理解越深刻, Shell对用户工作的支持就越有力。可以说,熟练掌握Shell编程,能大大提高系统...

    尚官Linux Shell 编程实战

    Shell是Linux的外壳,是Linux的用户界面, Shell为用户提供了输入命令和参数并可得到命令执行结果的环境。用户对Shell理解越深刻, Shell对用户工作的支持就越有力。可以说,熟练掌握Shell编程,能大大提高系统...

    shell 编程指南pdf

    10.10.6 从sed输出中设置shell变量 102 10.11 快速一行命令 102 10.12 小结 103 第11章 合并与分割 104 11.1 sort用法 104 11.1.1 概述 104 11.1.2 sort选项 104 11.1.3 保存输出 105 11.1.4 sort启动方式 105 ...

    shell 语言 语法总结

    参数替换和扩展 表格 B-5. 字符串操作 表格 B-6. 一些结构的汇总 表格 C-1. 基本sed操作 .. 表格 C-2. sed操作符举例 . C.2. Awk .. 表格 D-1. "保留的"退出码 Appendix E. I/O和I/O 重定向的详细介绍 Shell...

    shell替换文件中的文件路径脚本分享

    用法参数1、写有需要替换路径记录的文本,格式:老路径 老名称 新路径 新名称参数2、需要替换的文件的目录参数3、需要替换的文件的类型 代码如下:#!/bin/sh function _replace(){basepath=$0> $basepath.logi=1...

    Shell脚本专家指南

    《Shell脚本专家指南》面向中高级的shell程序员,以及需要解决日常问题的系统管理员,但假定读者能够读懂一般的shell代码。 编辑推荐 《Shell脚本专家指南》是我多年从事系统管理员一职所积累的非常有用的脚本和技术...

    shell编程学习笔记

    在定义变量时,若String中包含空格、制表符、换行符,需用单(双)引号,双引号内允许变量替换,而单引号内就不可以。 shell变量的作用域 可以用export内置命令将局部变量设置为全局变量。 ...

    Shell脚本学习笔记

    第1章 BashShell命令 6 1.1 Shell提示符 6 1.2 文件与目录Shell命令 7 1.2.1 更改目录命令(cd) 7 1.2.2 列表命令(ls) 7 ...7.3.1 更多替换选项 126 7.3.2 使用地址 127 7.3.3 删除行 128 7.3.4 插入和附加文本 129

    LINUX与UNIX SHELL编程指南(很全)

    10.10.6 从sed输出中设置shell变量 102 10.11 快速一行命令 102 10.12 小结 103 第11章 合并与分割 104 11.1 sort用法 104 11.1.1 概述 104 11.1.2 sort选项 104 11.1.3 保存输出 105 11.1.4 sort启动方式 105 ...

    linux下shell自动编译安装git下载的ffmpeg源码

    为此我参考srs的shell脚本,替换成ffmpeg-master.zip,并将h264编解码相关的aac、x264资源均做了更新。并更新了depends,方便minmal安装的linux。本人在centos6、7下均测试通过。 【说明】 #tar -xvf build_ffmpeg-...

    linux-Shell基础视频教程

    10.4.3 Shell基础-Bash变量-位置参数变量.mp4 10.4.4 Shell基础-Bash变量-预定义变量.mp4 10.5.1 Shell基础-Bash变量-数值运算与运算符.mp4 10.5.2 Shell基础-Bash变量-变量测试与内容替换.mp4 10.6.1 Shell基础...

    Linux与unix shell编程指南

    10.10.6 从sed输出中设置shell变量 102 10.11 快速一行命令 102 10.12 小结 103 第11章 合并与分割 104 11.1 sort用法 104 11.1.1 概述 104 11.1.2 sort选项 104 11.1.3 保存输出 105 11.1.4 sort启动方式 105 ...

    LINUX与UNIX SHELL编程指南 高清PDF

    10.10.6 从sed输出中设置shell变量 102 10.11 快速一行命令 102 10.12 小结 103 第11章 合并与分割 104 11.1 sort用法 104 11.1.1 概述 104 11.1.2 sort选项 104 11.1.3 保存输出 105 11.1.4 sort启动方式 105 ...

    学习shell必备(CN).chm

    9.3. 参数替换 9.4. 指定变量的类型: 使用declare或者typeset 9.5. 变量的间接引用 9.6. $RANDOM: 产生随机整数 9.7. 双圆括号结构 10. 循环与分支 10.1. 循环 10.2. 嵌套循环 10.3. 循环控制 10.4. 测试与分支(case...

    学习笔记---《shell从入门到精髓》张春晓

    ()也有这个作用【相当于在此处插入新的shell,此处会被新的shell的echo内容全部替换】 \(转义字符)---特殊字符转为普通字符 5,默认情况下,所有的变量都是全局变量!!! 【except:函数的参数是局部变量】 局部...

    绝版经典《Linux与UNIX Shell编程指南》

    10.10.6 从sed输出中设置shell变量 102 10.11 快速一行命令 102 10.12 小结 103 第11章 合并与分割 104 11.1 sort用法 104 11.1.1 概述 104 11.1.2 sort选项 104 11.1.3 保存输出 105 11.1.4 sort启动方式 105 ...

    shell教程-30章,下了之后会让你大吃一惊,相当好

    10.10.6 从sed输出中设置shell变量 102 10.11 快速一行命令 102 10.12 小结 103 第11章 合并与分割 104 11.1 sort用法 104 11.1.1 概述 104 11.1.2 sort选项 104 11.1.3 保存输出 105 11.1.4 sort启动方式 105 ...

    Linux与Unix Shell编程指南(PDF格式,共30章)

    10.10.6 从sed输出中设置shell变量 102 10.11 快速一行命令 102 10.12 小结 103 第11章 合并与分割 104 11.1 sort用法 104 11.1.1 概述 104 11.1.2 sort选项 104 11.1.3 保存输出 105 11.1.4 sort启动方式 105 ...

    linux shell 编程教程

    10.10.6 从sed输出中设置shell变量 102 10.11 快速一行命令 102 10.12 小结 103 第11章 合并与分割 104 11.1 sort用法 104 11.1.1 概述 104 11.1.2 sort选项 104 11.1.3 保存输出 105 11.1.4 sort启动方式 105 ...

Global site tag (gtag.js) - Google Analytics