i1zhuxian 发表于 2015-9-29 17:21:04

if case ,无法正确匹配 始终执行hadoop的start-all.sh

本帖最后由 i1zhuxian 于 2015-10-8 10:00 编辑

执行./ha.sh $1 $2 时 输入./ha.sh hbase stop
或其他的命令 都变成执行$HADOOP_HOME/sbin/start-all.sh 这个命令了
找了好久没找到哪里写错了 {:6_434:}
求各位大神帮帮……{:6_434:}


#!/bin/bash
if [ $1=="hadoop" ] ; then
      case $2 in
      start)
                $HADOOP_HOME/sbin/start-all.sh
                ;;
      stop)
      $HADOOP_HOME/sbin/start-all.sh
      ;;
      *)
      echo "it's wrong"
      ;;
      esac
else
      if [ $1=="spark" ];then
                case $2 in
                        start)
                              $SPARK_HOME/sbin/start-all.sh
                        ;;
                        stop)
                              $SPARK_HOME/sbin/stop-all.sh
                        ;;
                        *)
                              echo "it's wrong"
                        ;;
                esac
                else
                              if [ $1=="hbase" ];then
                                        case $2 in
                                        start)
                                                $HBASE_HOME/bin/start-hbase.sh
                                        ;;
                                        stop)
                                                $HBASE_HOME/bin/stop-hbase.sh
                                        ;;
                                        *)
                                                echo "it's wrong"
                                        ;;
                                        esac
                                        else
                                                      if [ $1=="zkServer" ];then
                                                                case $2 in
                                                                        start)
                                                      $ZK_HOME/bin/zkServer.sh $2
                                                                              ;;
                                                                        stop)
                                                                              $ZK_HOME/bin/zkServer.sh $2
                                                                              ;;
                                                                              status)
                                                                              $ZK_HOME/bin/zkServer.sh $2
                                                                              ;;
                                                                              *)
                                                                              echo "it's wrong"
                                                                              ;;
                                                                              esac
                                                      fi
                                        fi
      fi
fi

1307077801 发表于 2015-9-30 20:09:02

大概测试一下没发现什么问题


建议echo输出各命令,看看是不是环境变量的问题

或者在脚本开头加
. /etc/profile
. ~/.bash_profile

i1zhuxian 发表于 2015-10-8 09:59:34

1307077801 发表于 2015-9-30 20:09
大概测试一下没发现什么问题




{:6_441:}谢了哈原来是==空格问题……
页: [1]
查看完整版本: if case ,无法正确匹配 始终执行hadoop的start-all.sh