linux环境中,
A=1这种命名方式,变量作用域为当前线程
export命令出的变量作用域是当前进程及其子进程。
可以通过source 脚本,将脚本里面的变量放在当前进程中
附带自己写的tomcat启动脚本
#!/bin/bash cat <<EOF >startupTomcat.sh ck=\`ps -ef | grep tomcat1 | grep java | wc -l\` if [ $ck = 0 ]; then /home/wdj/tomcat1/bin/startup.sh exit 1 fi EOF #ֱ直接执行该命令是不行的,因为tomcat启动需要JAVA_HOME变量,A=1这种方式,变量作用域为当前线程,export命令出的变量作用域是当前进程及其子进程。source 脚本,将里面的变量放在当前进程中 cat <<EOF >shutdownTomcat.sh ck=\`ps -ef | grep tomcat1 | grep java | wc -l\` if [ $ck = 1 ]; then /home/wdj/tomcat1/bin/shutdown.sh exit 1 fi EOF if [ "$1" = "0" ] then SHELL=shutdownTomcat.sh elif [ "$1" = "1" ] then SHELL=startupTomcat.sh else echo "you must input param 0 or 1" exit 1 fi SERVERS="192.168.10.150 192.168.10.151" for SERVER in $SERVERS do /usr/bin/expect <<-EOF set timeout -1 spawn scp $SHELL $SERVER:/ expect { spawn scp $SHELL $SERVER:/ expect { "*yes/no*" {send "yes "} "*password*" {send "1234567 "} } spawn ssh $SERVER "source /etc/profile;chmod +x /$SHELL;/$SHELL;rm -rf /$SHELL" expect { "*yes/no*" {send "yes "} "*password*" {send "1234567 "} } sleep 1 EOF done