如何将命令的输出用作脚本中的变量?

如何将命令的输出用作脚本中的变量?

我需要以下脚本来查看服务器上正在运行的进程,以用作以下硬编码变量(orauserorasid

#!/bin/bash
orauser="oraqa1"
orasid="ERPQA1"
source /home/$orauser/$orasid.env
su - ${orauser}   << BOF 2>&1
export ORACLE_SID=$orasid
sqlplus /nolog << EOF 2>&1
connect / as sysdba
alter database begin backup;
exit;
EOF
BOF

做到这一点的最好方法是什么?

我可以通过运行获得我需要的实际输出ps

它将在开头显示orauser( ) 并在结尾显示( ) (在最后一个下划线之后)。oradevorasidERPDEV

例如

:~$ps -ef |grep pmon
oradev   22733     1  0 03:36 ?        00:00:05 ora_pmon_ERPDEV

如果失败,那么脚本将不会运行 - 这很好,因为这意味着该服务器上可能没有数据库......

最干净/最简洁的方法是什么?

答案1

像这样:

$ output="$(ps -ef |grep pmon)"

的输出ps -ef |grep pmon将存储在名为 的变量中$output

相关内容