使用expect脚本远程kill进程,需要对特殊字符进行转义。如$,“等符号。
在shell脚本中,写法如下:
ps -ef|grep '$servicename'|grep -v '.tar.gz'|grep -v 'grep'|awk '{print "proccess id is :"$2}'
对应的expect脚本为:
send "ps -ef|grep '$servicename'|grep -v '.tar.gz'|grep -v 'grep'|awk '{print \"proccess id is :\"\$2}'\r"
awk后面的”和$需要转义,”需要转义是因为最外面已有一层”“,$2需要\转义,否则会把2是当作一个变量,报错如下。
can't read "2": no such variable
while executing
"send "ps -ef|grep '$servicename'|grep -v '.tar.gz'|grep -v 'grep'|awk '{print \"$2\"}'\r""
(file "imssh.sh" line 22)