变量测试与内容替换

1. 变量测试与内容替换

变量转换方式 变量y没有设置 变量y为空值 变量y设置值 分析
x=${y-新值} x=新值 x为空 x=$y 如何y被设值则x=$y,否则x=新值
x=${y:-新值} x=新值 x=新值 x=$y 如何y值不为空则x=$y,否则x=新值
x=${y+新值} x为空 x=新值 x=新值 若y被设值则x=新值,否则x为空
x=${y:+新值} x为空 x为空 x=新值 若y值不为空则x=新值,否则x为空
x=${y=新值} x=新值,y=新值 x为空,y值不变 x=$y,y值不变 若y被设值则x=$y且y值不变,否则x=新值且y=新值
x=${y:=新值} x=新值,y=新值 x=新值,y=新值 x=$y,y值不变 若y不为空则x=$y且y值不变,否则x=新值且y=新值
x=${y?新值} 新值输出到标准错误输出(就是屏幕) x为空 x=$y 若y被设值则x=$y且y值不变,否则新值输出到标准错误输出(就是屏幕)
x=${y:?新值} 新值输出到标准错误输出 新值输出到标准错误输出 x=$y 若y不为空则x=$y且y值不变,否则新值输出到标准错误输出(就是屏幕)

2. 变量替换一

符号 含义
${var} 变量,界定范围
${var:num} 返回var中第num个字符到末尾的所有字符,正从左往右,负从右往左,有空格:{var: -2},没有空格:{var:1-3}或${var:(-2)}
${var:num1:num2} 从var的第num1个位置开始,提取长度为num2的子串。num1是位置,num2是长度
${var::num1} 从var的开始位置,提取到num1位置的子串。(正数:从左开始,负数:从右侧开始)
${var/word1/word2} 将var中第一个匹配到的word1替换为word2
${var//word1/word2} 将var中所有word1替换为word2

3. 变量替换二

定义一个变量定义了一个变量file:

file=/dir1/dir2/dir3/my.file.txt
符号 含义
${file#*/} 删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/} 删掉最后一个 / 及其左边的字符串:my.file.txt
${file#*.} 删掉第一个 . 及其左边的字符串:file.txt
${file##*.} 删掉最后一个 . 及其左边的字符串:txt
${file%/*} 删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*} 删掉第一个 / 及其右边的字符串:(空值)
${file%.*} 删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*} 删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本部主要介绍:Shell 编程时,变量测试与内容替换对照表,及演示变量的测试 介绍变量测试作用echo 是输出到屏...
    sshentree阅读 515评论 0 0
  • 用到回来查这个表格通过x值判断y是否有值 测试x=${y-新值}y不存在,x值是新值 使用场景:程序执行的时候,判...
    小笨笨的花花阅读 32评论 0 0
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,779评论 0 11
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,570评论 16 22
  • 创业是很多人的梦想,多少人为了理想和不甘选择了创业来实现自我价值,我就是其中一个。 创业后,我由女人变成了超人,什...
    亦宝宝阅读 1,869评论 4 1