shell脚本学习第四天——bash内部变量,变量主串,变量替换
2017-07-26 21:32
891 查看
一、bash内部变量:
常见的内部命令:echo,eval,exec,export,readonly,read,shift ,wait,exit和点(.)也就是source命令。命令 | 作用 |
---|---|
echo 变量名 | 将变量名表指定的变量显示到标准输出 |
eval | 读取一连串的参数,然后再依参数本身的特性来执行 |
exec命令参数 | 当Shell执行到exec语句时,不会去创建新的子进程,而是转去执行新的命令,当指定的命令执行完时,该进程(也就是当初的Shell)就终止了,所以Shell程序中的exec后面的语句将不再被执行 |
export 变量名=value | Shell 可以用export把它的变量向下打入子Shell,从而让子进程继承父进程中的环境变量,但子Shell不能用export把他的变量向上带入父Shell |
readonly 变量名 | 从标准输入读字符串,传给指定变量 |
shift | 使变量位置发生偏移,即 $2成为$1,$3成为$2,每执行一次$#-1 |
1、eval:
一个eval只能使shell对参数多一次处理,因此有几个eval就可以多加几次。2、shift
3、readonly
4、exec
执行完后直接退出系统。二、变量主串:
export name="i am yangni" echo ${#name} echo ${name:2} echo ${name:2:3} echo ${name#i am} echo ${name%ni} echo ${name/yang/chun}
应用实例:
批量修改文件名for f in ` ls *.c` //设置f的值 do mv $f `echo ${f/yangni/qicheng}` done
当然还有更简单的方法,那就是rename
rename xxx yyy *.c:把所有含字符串xxx的.c文件,xxx改为yyy
三、变量替换:
1、${value:-word} 判断变量是否定义
result=${test : -UNSET} :如果变量test定义了,显示test内容。如果test未定义,打印UNSET(一个字符串)//test未定义: [yangni@centos6 abc]$ result=${test:=UNSET} [yangni@centos6 abc]$ echo $result UNSET //test定义: [yangni@centos6 abc]$ test=3 [yangni@centos6 abc]$ result=${test:=UNSET} [yangni@centos6 abc]$ echo $result 3
2、${value:word} 若变量value未定义,将word赋值给value,确保变量始终有值。
result=${test :=UNSET} :变量未定义,将字符串UNSET赋值给test[yangni@centos6 abc]$ unset test [yangni@centos6 abc]$ result=${test:=UNSET} [yangni@centos6 abc]$ echo $test //test未定义,将UNSET赋值给它 UNSET
${value-word}类似于2,变量value不存在用word替代。
1./etc/init.d/httpd
2./etc/init.d/crond
3.对变量的路径操作最好先判断是否为空,特别是删除操作:
path =/server/backup
find ${path:= /tmp} -name “*.tat.gz” -type f |xargs rm -f
rm -fr ${path:= /tmp} //删除路径
每日编程练习:
#!/bin/sh result=1 while [ $# -gt 0 ] do result=`expr $result \* $1` shift done echo $result
用shift实现所有参数的乘积。注意,乘号要用转义字符转义,不然会报错。
相关文章推荐
- Shell(bash)脚本学习之--------内建/外建,自定义变量和环境变量
- 【Shell脚本学习9】Shell替换:Shell变量替换,命令替换,转义字符
- 【Shell脚本学习9】Shell替换:Shell变量替换,命令替换,转义字符
- 尚观学习-shell-置换 & 变量替换 & 引用
- Shell脚本学习-位置参数和特殊变量
- shell脚本的作用,shell脚本变量的定义和三种赋值方式【shell脚本的学习笔记一】
- shell脚本学习第二天——变量定义(含字符串变量定义)
- Shell脚本学习指南-查找与替换
- shell脚本变量学习小记
- linux bash shell之变量替换::=句法、=句法、:-句法、-句法、=?句法、?句法、:+句法、+句法
- Shell脚本学习指南(二)——变量、条件、循环
- shell学习六-----变量替换
- 【Shell脚本学习8】Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Shell脚本编程之Bash特性-IO重定向-变量
- Linux学习笔记:bash特性之多命令执行,shell脚本
- bash shell学习之变量
- Linux学习之2——bash shell基本语法和变量
- BASH命令和SHELL脚本总结(16)父脚本中export的变量在子脚本中的可见性测试
- Shell基础-Bash变量-变量测试与内容替换