信号捕捉trap getopts

 

一、信号捕捉trap:

 #!/bin/bash
 # Date: 2010-12-25 14:17:44
touch /tmp/traptest
mytrap() {
     rm -f /tmp/traptest &> /dev/null
     echo "Quid the script..."
    exit 1
 }
 trap 'mytrap' SIGINT
 read A

该脚本捕捉退出信号SIGINT  当脚本在执行中用户按下ctrl+c时脚本就会显示Quid the script..."  也能捕捉1 17 18 19 号进程   9号也可以但不能忽略 可以做一些收尾工作
在不正常退出时要做一些关于变量的注销处理 一般系统会处理

但是临时文件是不会被注销的 在脚本中进行删除处理

扩展信号捕捉:ping

当用户在脚本执行中按下ctrl+c时 就会停止运行 不会继续

echo后引号的“分号”表示两个单独的命令 没有关系
  

二:随机数:随机在数组中挑选一个元素

  ZU=("zhang yong"  "jing jing"  "zhao yue fei"  "hou li jun"  "zhao bao yu"  "li xiao ge"  "li yuan peng"  "cui jia" )  
      INDEX=$[$RANDOM%8]  
      echo ${ZU[$INDEX]}

系统中自带的一个随机参数$RANDOM  会生成随机数字

   随机在数组中挑选二个元素  不会出现重复

  1 #!/bin/bash
  2#Date && Time:2010-12-21 06:21:27
  3 group=(a b c d)
  4 index=$[$RANDOM%4]
  5 index1=$[$RANDOM%4]
  6 m=`echo ${group[$index]}`
  7 n=`echo ${group[$index1]}`
  8 [ $index != $index1 ] && echo $m $n

关于getopts  可以给脚本传一个选项参数

  1 #!/bin/bash
  2 # Description:
  3 # Date: 2010-12-25 10:27:59
  4 # Author:
  6 read -p "A number:" A
  7 read -p "B number:" B
  8
  9 while getopts ":abc" SWITCH(变量名); do
 10   case $SWITCH in
 11     a) echo "$[$A+$B]" ;;
 12     b) echo "$[$A/$B]" ;;
 13     c) echo "$[$A*$B]" ;;
 15    \?) echo "Unkown operation."(\(转义)?其他任意单个字符)
 16   esac
 17 done

 有三个内置变量 可以直接调用 OPTING   OPTARG(指定选项的参数)

给脚本传参数  根据参数能自动的添加作者和表述信息

#!/bin/bash
while getopts ":a:d:" SWITCH ; do
  case $SWITCH in
    a)
    AUTHOR=$OPTARG ;;
    d)
    DESC=$OPTARG ;;
   \?)
    echo "don't know"
    exit 1
    ;;
  esac
done

shift $[$OPTIND-1]

if ! grep "#!/bin/bash" $1 &> /dev/null; then
cat>> $1 <<EOF
#!/bin/bash
# Description:  ${DESC}
# Date: `date +"%F %T"`
# Author: ${AUTHOR:=jing}
# Version: 0.01

EOF
fi
vim +6 $1

注解:

shift  轮换 可以让脚本的参数显示完整  脚本中出现$1是就会采用

 :abc 可以忽略脚本本身错误  a后面的:表示可以添加参数

你可能感兴趣的:(脚本,职场,休闲)