Два условия «если» одновременно - PullRequest
0 голосов
/ 27 апреля 2018

Я пишу сценарий для доставки мне данных из других узлов через 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 голосов
/ 27 апреля 2018

Насколько я понимаю, в синтаксисе нет ничего плохого. Возможно, вы захотите что-то сделать с пробелами и т. Д. Для улучшения читабельности, но это так.

Я предположил, что 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, чтобы проверить правильность вашей комбинации sed, awk, grep.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...