一、脚本
#!/bin/bash
case $1 in
"start"){
for i in hadoop12 hadoop13 hadoop14
do
echo ---------- zookeeper $i 启动 ------------
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
done
};;
"stop"){
for i in hadoop12 hadoop13 hadoop14
do
echo ---------- zookeeper $i 停止 ------------
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
done
};;
"status"){
for i in hadoop12 hadoop13 hadoop14
do
echo ---------- zookeeper $i 状态 ------------
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"
done
};;
esac
注:hadoop12 hadoop13 hadoop14为三台服务器名称,可根据自己的需求进行添加或者修改名称。
注:可加2> /dev/null 将日志过滤掉,不出现在输出台上
2> /dev/null ===>意思是将错误日志输出到“黑洞”(丢弃)
二、相关语法
1)基本语法
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注意事项:
(1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
(2)双分号“;;”表示命令序列结束,相当于java中的break。
(3)最后的“*)”表示默认模式,相当于java中的default。
三、简化版脚本
#!/bin/bash
for i in hadoop12 hadoop13 hadoop14
do
echo ------------------- $i ------------------
ssh $i "zkServer.sh $*" 2> /dev/null
done
注:2> /dev/null ===>意思是将错误日志输出到“黑洞”(丢弃)