从 oratab 文件中检索 oracle sid

Retrieve oracle sid from oratab file

我正在创建这个 ksh shell 脚本来比较来自用户输入的两个数据库名称的 Oracle 主目录。

我尝试使用来自不同线程的 catsed,但不知何故无法将 oracle home 值放入变量中以进行比较。

Oratab:
db1:/oracle/app/oracle/product/11.2.0.3:Y
db2:/oracle/app/oracle/product/11.2.0.3:N
#db3:/oracle/app/oracle/product/11.2.0.4:Y

Runtime:
./compare_db db1 db2

#!/bin/ksh
sid1=;
sid2=;
file=/etc/oratab


function compare  {

 home1= sed -n "s#${sid1}.*/\(.*\)${sid1}.*##p" $file
 home2= sed -n "s#${sid2}.*/\(.*\)${sid2}.*##p" $file

if $home1 = $home2; then
  echo "Success"
else
  echo "Failure"
fi
}

Output: (I don't want to include last part "N/Y" after the : (colon))
home1 = /oracle/app/oracle/product/11.2.0.3
home2 = /oracle/app/oracle/product/11.2.0.3
db1 = db2
success

显然上面没有工作,只是测试代码,有人评论吗,缺少什么或者如何以优雅的方式完成?

谢谢,

你可以用这个程序组合优雅地完成它:

home1=$(grep $sid1 $file | cut -d":" -f2) --> output /oracle/app/oracle/product/11.2.0.3
home2=$(grep $sid2 $file | cut -d":" -f2) --> output /oracle/app/oracle/product/11.2.0.3

grep --> 查找指定SID所在的行

cut --> 剪切第二个字段(由 -f2 指定),字段以指定字符分隔 -d":":"

awk 有效:

awk -F: "/^${mysid}/{printf \"%s\n\",$2}" /etc/oratab