我正在编写一个脚本,在多选选项菜单中通过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条件。
正确的语法是什么?
答案 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
来验证您的sed
,awk
,grep
组合是否正常运作。