​[20210107]编写bash shell脚本遇到的问题.txt

来源:这里教程网 时间:2026-03-03 16:22:36 作者:

[20210107]编写bash shell脚本遇到的问题.txt --//上午写bash shell脚本,遇到一些问题,主要是自己不经常写,而且写的脚本往往是自用,里面检测并不是很严格。 --//遇到的问题做一个记录: 1.EOF问题: --//EOF,导致脚本执行失败: --//可以参考链接http://blog.itpub.net/267265/viewspace-2732891/ --//真心不应该使用``引用命令.在分辨率很高的情况下根本看不见,最好改用$()方式.感觉使用'EOF'更加清晰一些. otrace=$(sqlplus -S -l / as sysdba <<'EOF' set head off select VALUE from v$diag_info where name='Diag Trace'; quit EOF ) 2.没有考虑数据库是否启动的情况.应该加入判断. wc_count=$(ps -ef | grep [o]ra_pmon_${ORACLE_SID}|wc -l) if [ $wc_count -eq 1 ] ; then otrace=$(sqlplus -S -l / as sysdba <<EOF set head off select VALUE from v\$diag_info where name='Diag Trace'; quit EOF ) oadump=$(sqlplus -S -l / as sysdba <<EOF set head off select VALUE from v\$parameter where name='audit_file_dest'; quit EOF ) fi 3.注意sqlplus执行后赋值的环境变量: --//实际上这个问题以前也遇到过.通过例子说明: oo=$(sqlplus -S -l / as sysdba <<'EOF' set head off select VALUE from v$diag_info where name='Diag Trace'; quit EOF ) $ echo $oo /u01/app/oracle/diag/rdbms/book/book/trace $ echo "$oo" /u01/app/oracle/diag/rdbms/book/book/trace --//两者的显示不一样.我感觉还是处理掉这个回车问题.我采用的方式如下: otrace=$(echo $otrace) oadump=$(echo $oadump) 4.test -n 判断问题: --//我在这里栽得跟头更大. --// -n STRING   the length of STRING is nonzero $ [ -n $ORACLE_SID ] && echo ok ok --//如果bash shell变量不存在呢? $ echo $ORACLE_SID1 $ [ -n $ORACLE_SID1 ] && echo ok ok --//居然也是ok,实际上应该写成如下: $ [ -n "$ORACLE_SID1" ] && echo ok $ echo $? 1 5.另外如果sqlplus中执行语句不长可以写成如下: $ oo= $ oo=$(sqlplus -S -l / as sysdba <<'EOF'^Jset head off^Jselect VALUE from v$diag_info where name='Diag Trace';^Jquit^JEOF^J) $ echo $oo /u01/app/oracle/diag/rdbms/book/book/trace --//或者这样写: $ oo=$(sqlplus -S -l / as sysdba <<< "set head off^Jselect VALUE from v\$diag_info where name='Diag Trace';^Jquit^J") $ echo $oo /u01/app/oracle/diag/rdbms/book/book/trace $ oo=$(sqlplus -S -l / as sysdba <<< "set head off^Jselect VALUE from v\$diag_info where name='Diag Trace';^Jquit^J"| grep '^/') $ echo $oo /u01/app/oracle/diag/rdbms/book/book/trace --// 里面^J可以通过ctrl+v+ctrl+j输入,这样代码更加简洁一些.

相关推荐