两个"如果"条件在同一时间

时间:2018-04-27 09:11:51

标签: 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 -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

当我执行脚本时,我看到它没有看到显示消息的第二个if条件。

正确的语法是什么?

1 个答案:

答案 0 :(得分:0)

据我所知,语法没有任何问题。您可能想要对间距等做一些事情以提高可读性,但就是这样。

我假设file_name设置在此部分之前的某个位置,这是选项。

如果事情无法正常工作,您可以添加一些语句用于调试目的,以后必须删除。例如,在这种情况下,我希望看到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" > 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

您可以使用tempfile来验证您的sedawkgrep组合是否正常运作。