从 oratab 文件中检索 oracle sid
Retrieve oracle sid from oratab file
我正在创建这个 ksh shell 脚本来比较来自用户输入的两个数据库名称的 Oracle 主目录。
我尝试使用来自不同线程的 cat
和 sed
,但不知何故无法将 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
我正在创建这个 ksh shell 脚本来比较来自用户输入的两个数据库名称的 Oracle 主目录。
我尝试使用来自不同线程的 cat
和 sed
,但不知何故无法将 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