コマンド出力をスクリプトの変数としてどのように使用できますか?

コマンド出力をスクリプトの変数としてどのように使用できますか?

orauser次のハードコーディングされた変数(およびorasid)として使用するためにサーバーで実行されているプロセスを表示するには、次のスクリプトが必要です。

#!/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

関連情報