如您需要技术咨询、解决方案定制、故障排除、运维监控等服务,可联系ericwcn#at#163.com。

Shell变量子串知识及变量

Linux 立杰 212℃ 0评论

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字符串将替代变量的值.

转载请注明:知识库 » Shell变量子串知识及变量

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址