Shell变量子串知识及实践
1.Shell变量子串介绍 表达式 说 明 ${parameter} 返回变量$parameter的内容
${#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%%word} 从变量${parameter}结尾开始删除最长匹配的word子串
${parameter/pattern/string} 使用string代替第一个匹配的pattern
${pattern//pattern/string} 使用string待敌所有匹配的pattern
实例1: 文件批量重命名
创建20个空文件 $ touch linux_file_{1..20}.txt
$ ls
linux_file_10.txt linux_file_12.txt linux_file_14.txt linux_file_16.txt linux_file_18.txt linux_file_1.txt linux_file_2.txt linux_file_4.txt linux_file_6.txt linux_file_8.txt
linux_file_11.txt linux_file_13.txt linux_file_15.txt linux_file_17.txt linux_file_19.txt linux_file_20.txt linux_file_3.txt linux_file_5.txt linux_file_7.txt linux_file_9.txt
将文件名称中的linux_file_1.txt替换成file_linux_1.txt #批量重命名
$ for f in `ls linux_file_*.txt`;do mv $f ${f/linux_file/file_linux};done
#结合sed
$ for f in `ls linux_file_*.txt`;do mv $f `echo $f| sed 's/linux_file/file_linux/g'`;done
#删除文件名中的linux_
$ for f in `ls linux_file_*.txt`;do mv $f ${f#linux};done
#结合awk
$ for f in `ls linux_file_*.txt`;do mv $f `echo $f |awk -F 'linux_' '{print $1$2}'`;done
Shell扩展变量的知识与实践
Shell特殊扩展变量说明 表达式 说 明 ${parameter:-word} 如果parameter的变量值为空或为赋值,则用word字符串替换变量的值
${parameter:=word} 如果parameter的变量值为空或为赋值,则设置这个变量值为word,并返回其值.位置变量和特殊变量不适用.
用途: 一般基本同上一个${parameter:-word},当该变量有额外给parameter赋值.
${parameter:?word} 如果parameter的变量值为空或为赋值,则word字符串将被作为标准错误输出,否则输出变量的值.
${parameter:+word} 如果parameter的变量值为空或为赋值,则什么都不做,否则word字符串将替代变量的值.