Bash 两个“;如果;同时条件

Bash 两个“;如果;同时条件,bash,if-statement,choice,Bash,If Statement,Choice,我正在编写一个脚本,通过多选菜单中的ssh从其他节点获取数据,并希望根据这些数据显示一条消息 if [[ "$option" == "1" ]] then ssh skyusr@<IP> "export JAVA_HOME=/opt/mesosphere && /var/lib/mesos/slave/slaves/*/frameworks/*/executors/*/runs/latest/apache-cassandra-3.0.10/bin/nodetool

我正在编写一个脚本,通过多选菜单中的ssh从其他节点获取数据,并希望根据这些数据显示一条消息

if [[ "$option" == "1" ]]
then
  ssh skyusr@<IP> "export JAVA_HOME=/opt/mesosphere && /var/lib/mesos/slave/slaves/*/frameworks/*/executors/*/runs/latest/apache-cassandra-3.0.10/bin/nodetool -p 7199 status" | sed -n '6,10p' | awk '{print $1,$2}' | grep DN > $file_name
  if [ -s $file_name ]
  then
    echo "All Cassandra Nodes are UP !"
  else cat "$file_name"
  fi
fi
如果[[“$option”==“1”]]
然后
ssh skyusr@“export JAVA_HOME=/opt/mesosphere&/var/lib/mesos/slave/slaves/*/frameworks/*/executors/*/runs/latest/apache-cassandra-3.0.10/bin/nodetool-p7199状态”| sed-n'6,10p'| awk'{print$1,$2}'| grep DN>$file|name
如果[-s$文件名]
然后
echo“所有Cassandra节点都已启动!”
else类别“$file\u name”
fi
fi
当我执行脚本时,我看到它没有看到显示消息的第二个if条件


正确的语法是什么?

据我所知,语法没有问题。您可能想做一些关于间距等的事情来提高可读性,但就是这样

我假设,
文件名
设置在这个部分之前的某个地方,就像选项一样

如果事情不能按预期工作,可以添加一些语句进行调试,以后必须删除这些语句。例如,在本例中,我希望查看
ssh
的输出,并添加一些echo以查看流控制:

if [[ "$option" == "1" ]] ; then
    ssh skyusr@<IP> "export JAVA_HOME=/opt/mesosphere && /var/lib/mesos/slave/slaves/*/frameworks/*/executors/*/runs/latest/apache-cassandra-3.0.10/bin/nodetool -p 7199 status" > tempfile
    cat tempfile |
      sed -n '6,10p' |
      awk '{print $1,$2}' |
      grep DN > "$file_name"
    if [ -s "$file_name" ] ; then
        echo "All Cassandra Nodes are UP !"
    else
        echo "$file_name is not empty"
        cat "$file_name"
    fi
fi
如果[[“$option”==“1”];然后
ssh skyusr@“export JAVA_HOME=/opt/mesosphere&&/var/lib/mesos/slave/slaves/*/frameworks/*/executors/*/runs/latest/apache-cassandra-3.0.10/bin/nodetool-p 7199 status”>临时文件
cat临时文件|
sed-n'6,10p'|
awk“{打印$1,$2}”|
grep DN>“$file\u name”
如果[-s“$file_name”];然后
echo“所有Cassandra节点都已启动!”
其他的
echo“$file\u name不为空”
cat“$文件名”
fi
fi
您可以使用
tempfile
来验证您的
sed
awk
grep
组合是否正确工作。

您如何“看到它没有看到第二个if条件”?您是否尝试过使用
set-xv
运行它?