1、变量中字符的长度:${#VARNAME}
#A='hello world'
#echo ${#A} --显示定义变量A的长度,输出结果为11
#11
2、变量赋值等:
${parameter:-word}:如果parameter为空或未定义,则变量展开为“word”;否则,展开为parameter的值;
${parameter:+word}:如果parameter为空或未定义,不做任何操作;否则,则展开为“word”值;
${parameter:=word}:如果parameter为空或未定义,则变量展开为“word”,并将展开后的值赋值给parameter;
${parameter:offset}:去掉定义的偏移数
${parameter:offset:length}:取子串,从offset处的后一个字符开始,取lenth长的子串
3、脚本配置文件
服务脚本通常放在/etc/rc.d/init.d下,一般命名为:/etc/rc.d/init.d/服务脚本
而服务脚本所支持配置文件通常命名为:/etc/sysconfig/服务脚本同名的配置文件
(一般脚本支持的配置文件都会放在sysconfig下,就会判定sysconfig中是否为变量提供值,如果没有赋值,就是用下面操作中为变量赋值)
比如:编辑一个脚本a.sh,脚本的配置文件定义为a.conf
4、如果脚本中的函数变量与全局变量重名,可以在脚本中使用定义局部变量
格式:local VAR_NAME=
5、命令mktemp
为了避免自己创建文件或目录与别人创建的文件或目录不冲突,我们可以引用命令mktemp
创建临时文件,每一次执行这个命令都会生成一个不同名称文件,可以使用一个定义变量引用,这时候文件名称就不会变化;
6、信号(信号是进程间通信的一种方式,是一个进程向另一个进程发送短小信息,能够实现控制另外一个进程的运作机制,通常使用kill命令)
格式:kill -信号 进程号
常使用的信号:
1、HUP
2、INT
9、KILL
15、TERM
脚本中也能实现信号捕捉,但9和15无法捕捉;要想在脚本中实现信号捕捉可以使用trap命令
格式:trap 'COMMAND' 信号列表
通过编辑一个捕捉信号的脚本来演示trap命令的效果;