无论侦听器名称是什么,都从 sqlplus 获取 oracle 侦听器状态输出

Get oracle listener status output from sqlplus no matter what the listener name

使用以下命令,我可以在 listener.ora 中获取当前 $ORACLE_HOME

的侦听器名称
grep ' =$' $ORACLE_HOME/network/admin/listener.ora | grep -v '(' | grep -v 'SID_LIST' | sed 's/=//g'

但是,我的目标是通过退出 SQLPLUS 将其输出。

SQL> !lsnrctl status

这样上面的命令将使用 grep 的输出:

SQL> !lsnrctl status <output_of_grep>

我正在努力尝试将其全部放入某个变量中,但我的 unix 技能让我失望了。而且,实际上我什至不知道是否可以这样做,有人可以帮忙吗?

您可以进一步将 grep 命令通过管道传递给 xargs。参见示例:

grep ' =$' $ORACLE_HOME/network/admin/listener.ora | grep -v '(' | grep -v 'SID_LIST' | sed 's/=//g' | xargs -n 1 lsnrctl status

我已经扩展了你的 grep 并通过 xargs 将它发送到 lsnrctl。