首页 > 代码库 > 脚本编程

脚本编程

  1、变量中字符的长度:${#VARNAME}

 [root@fox ~]# tt=kad123; echo ${ #tt }
6


  2、变量赋值等:

${parameter:-word}:如parameter为空或未定义,则变量展开为“word”;否则,展开为parameter的值;

${parameter:+word}:如parameter为空或未定义,不做任何操作;否则,则展开为“word”值;

${parameter:=word}:如parameter为空或未定义,则变量展开为“word”,并将展开后的值赋值给parameter;

${parameter:offset}

${parameter:offset:length}:取子串,从offset处的后一个字符开始,取lenth长的子串;

[root@test tmp]# A=33
[root@test tmp]# echo ${A:-50}
33
[root@test tmp]# unset A  #删除变量
[root@test tmp]# echo ${A:-50}
50


  3、脚本配置文件

/etc/rc.d/init.d/服务脚本

服务脚本支持配置文件:/etc/sysconfig/服务脚本同名的配置文件

[root@fox ~]# cat a.sh
#!/bin/bash
.  /root/a.conf
TEST=${TEST:-info}
[ -n "$TEST" ] && echo $TEST
[root@fox ~]# cat a.conf
TEST=
[root@fox ~]# ./a.sh
info


4、局部变量    local VAR_NAME=


5、创建临时文件或目录:  mktemp /tmp/file.XX

    -d: 创建为目录

[root@fox ~]# FILE=`mktemp  /tmp/file.XXXXX`
[root@fox ~]# echo $FILE
/tmp/file.RnDpc

[root@fox ~]# FILE=`mktemp -d /tmp/file.XXXXX`
[root@fox ~]# file $FILE
/tmp/file.GzxiL: directory


6、信号 kill -SIGNAL PID     1: HUP    2: INT    9: KILL    15: TERM   

脚本中,能实现信号捕捉,但9和15无法捕捉 Ctrl+c: SIGINT

trap命令:

    trap‘COMMAND‘ 信号列表

#!/bin/bash
#
I=131
FILE=`mktemp /tmp/file.XXXXXX`
clearup() {
  rm -f $FILE && echo "  quit,  bye..."
  exit 1
}
trap ‘clearup‘ INT
for I in {200..210} ; do
  ping -c 1 110.119.131.$I &> /dev/null
  NU=$?
  if [ $NU -eq 0 ] ; then
     echo "110.119.131.$I is up."
  else
     echo "110.119.131.$I is down."
  fi
done


---end---

脚本编程