SHELL 脚本

头部 是脚本解释器,不同的脚本有不同的解释器,如bash,还有expect脚本

#!/usr/bin/env bash

变量

home=/usr/local/apache-tomcat-8.0.53

字符拼接当前时间

log=hap-``date "+%Y-%m-%d"``.log

执行

exec $home/deploy-hdp.sh $home/upload/core.war

exec执行脚本需要是绝对路径,如果是相对路径,会报找不到对应的文件。exec执行会关闭之前的进程新开一个进程.

循环

  1. for((i=0;i<90;i++))
  2. do
  3. sleep 2
  4. tail -n 100 /cmcc/data1/tomcatLogs/${log}
  5. done
  1. while test commands
  2. do
  3. my commands
  4. done

其他

tail -n 800 log/*.log |grep -A 200 "The following profiles are active"

打印关键词后面的200行

EXPECT脚本

#!/usr/bin/env expect

变量

set timeout 30

获取参数

set password [lindex $argv 0]

获取时间

set date [ clock format [ clock seconds ] -format "%Y-%m-%d" ]

执行命令

spawn scp hap@10.253.60.45

spawn ssh $host "tail -f /cmcc/data1/tomcatLogs/$log"

EXPECT & SEND

  1. expect[空格]{
  2. "condition-1":
  3. send [空格]"command1"
  4. expect[空格]{
  5. send [空格]"command2"
  6. send_error "error 1"
  7. exit 1
  8. }
  9. }
  10. expect eof

expect eof 与 spawn 相对应,表示结束。