1.本地变量
- 界说Shell变量,变量名不需要加$
- 本地变量只在⽤户当前shell⽣存期中有效
2.变量界说
- 变量名要求:字⺟、数字、下划线构成、可以是字⺟或是下划线开头
- 变量名严格区分⼤⼩写
3.取出变量值
- 单引号:所⻅即所得,强引⽤
- 双引号:输出引号⾥所有内容,识别特殊符号,弱引⽤
- ⽆引号:一连的符号可以不加引号,有空格则有歧义,最好使⽤双引号
- 反引号:引⽤命令执⾏结果,即是$()⽤法
4.特殊变量
- shell的特殊变量,⽤在如脚本,函数通报参数使⽤
- 有如下特殊的,位置参数变量
变量作用$0获取shell脚本文件名,以及脚本路径$n获取shell脚本的第n个参数,n在1~9之间,大于9则需要些{},如{$10}$#获取实行的shell脚本背面的参数总个数$*获取shell脚本所有参数,不加引号等同于$@作用,加上引号"$*"作用是吸取所有参数为单个字符串$@不加引号,效果同上,加引号,是吸取所有参数为独立字符串
5.特殊状态变量
- 查找方式:man bash,搜索Special Parameters
变量作用$?前次命令实行状态返回值,0正确,非0失败$$当前shell脚本的历程号$!上一次背景历程的PID$_获取前次命令的最后一个参数
6.shell内置的变量命令
1.echo
- 参数:
- -n:不换行输出内容
- -e:表明转义字符
- \n:换行
- \r:回车
- \t:tab
- \b:退格
- \v:纵向制表符
2.eval
- 功能:实行多个命令
- 示例:eval ls; cd ~
3.exec
- 功能:不创建子历程,实行后续命令,exec实行后,自动exit
7.截取字符串
- 语法:
语法作用#从开头删除匹配最短##从开头删除匹配最长%从结尾删除匹配最短%%从结尾删除匹配最长#指定字符内容截取a*c匹配开头为a,中间恣意个字符,结尾为c的字符串${变量}返回变量值${#变量}返回变量长度,字符长度${变量:start}返回变量offset数值之后的字符${变量:start:length}提取offset之后的length限制的字符${变量#word}从变量开头,删除最短匹配的word子串${变量##word}从变量开头,删除最长匹配的word${变量%word}从变量结尾,删除最短匹配的word子串${变量%%word}从变量结尾,删除最长匹配的word子串${变量/pattern/string}用string代替第一个匹配的pattern${变量//pattern/string}用string代替所有的pattern
- 操作实例:删除文件名
- # 通过⼦串的替换⽅式
- snowk@SnowKYP# f=stu_102999_1_finished.jpg
- # 变量的⼦串功能,去掉后缀
- snowk@SnowKYP# echo ${f//_finished/}
- stu_102999_1.jpg
- # 利⽤变量的反引⽤替换⽂件名
- snowk@SnowKYP# mv $f `echo ${f//_finished/}`
- # 剩下的⽂件,利⽤循环操作
- # 找出剩下所有需要替换的jpg⽂件
- snowk@SnowKYP# ls *fin*.jpg
- stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg
- stu_102999_5_finished.jpg
- # 写shell循环代码,循环操作
- # 去掉所有jpg⽂件的_finished后缀
- snowk@SnowKYP# for file in `ls *fin*.jpg`;do mv $file `echo ${file//_finished/}`;done
- snowk@SnowKYP# ls *.jpg
- stu_102999_1.jpg stu_102999_2.jpg stu_102999_3.jpg stu_102999_4.jpg stu_102999_5.jpg
复制代码 8.特殊shell扩展变量处理
1.语法
- 功能:这四个扩展变量,都属于对变量的值举行判断、处理
- 语法:parameter,参数,范围
- ${parameter:-word}:如果parameter变量值为空,返回word字符串
- ${parameter:=word}:如果parameter变量值为空,则word替代变量值,且返回其值
- ${parameter:?word}:如果parameter变量值为空,word当作stderr输出,否则输出变量值
- ${parameter:+word}:如果parameter变量值为空,什么都不做,否则word返回
2.应用场景
- 数据备份,删除过期数据的脚本
- # 原脚本命令,有bug,有歧义
- find ${file_path} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
- # 修正后的脚本命令
- # 如果有bug起义,就在当前目录搜索并执行删除
- find ${file_path:=/tmp} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |