变量测试与内容替换

2020-11-18  本文已影响0人  平静_b99e

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
上一篇下一篇

猜你喜欢

热点阅读