[20210107]編寫bash shell指令碼遇到的問題.txt
[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輸入,這樣程式碼更加簡潔一些.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2748259/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20231102]除錯bash shell指令碼遇到的問題.txt除錯指令碼
- Shell 指令碼編寫指令碼
- 編寫shell指令碼的規範指令碼
- 如何編寫高效的 Shell 指令碼指令碼
- 如何編寫冪等的 Bash 指令碼?- Arslan指令碼
- bash shell指令碼訪問PostgreSQL的三種方式指令碼SQL
- 寫python指令碼遇到的些許小問題Python指令碼
- Linux編寫Bash指令碼的10個技巧Linux指令碼
- 編寫更好 Bash 指令碼的 8 個建議指令碼
- 如何使用zx編寫shell指令碼指令碼
- 跟我一起寫shell補全指令碼(Bash篇)指令碼
- 技能篇:shell教程及指令碼編寫指令碼
- shell 指令碼如何編寫-致初學者指令碼
- shell編寫服務啟動指令碼指令碼
- shell 指令碼的除錯問題指令碼除錯
- BASH Shell的指令碼程式設計(轉)指令碼程式設計
- 編寫可靠 shell 指令碼的 8 個建議指令碼
- 如何編寫冪等的Bash指令碼(函式)? · Fatih Arslan指令碼函式
- shell和bash指令碼命令學習指令碼
- [20210330]bash使用source or ..呼叫shell指令碼注意txt指令碼
- 寫出健壯的Bash指令碼指令碼
- shell 指令碼訪問oracle 寫法 (ZT)指令碼Oracle
- bash shell指令碼執行方法總結指令碼
- bash shell指令碼接受多個引數指令碼
- shell 指令碼寫法:指令碼
- Bash Shell指令碼中的陣列使用例項指令碼陣列
- [20231023]生成bbed的執行指令碼(bash shell).txt指令碼
- Linux 中高效編寫 Shell 指令碼的 10 個技巧Linux指令碼
- 編寫VCS執行使用的makefile遇到的問題
- [20241110]使用xto10.sql指令碼遇到的問題.txtSQL指令碼
- 高階bash/shell指令碼程式設計指南指令碼程式設計
- 10 個實戰及面試常用 Shell 指令碼編寫面試指令碼
- Shell指令碼入門:編寫格式與執行方式指令碼
- shell指令碼頭,#!/bin/sh與#!/bin/bash的區別.指令碼
- 70個經典的 Shell 指令碼面試問題指令碼面試
- Linux系統中Shell指令碼編寫的一點心得Linux指令碼
- shell-【技術乾貨】工作中編寫shell指令碼實踐指令碼
- 執行shell指令碼報錯:-bash: ./test1.sh: /bin/bash^M: ...指令碼