国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux grep命令與$?命令結(jié)合使用技巧

這篇具有很好參考價值的文章主要介紹了Linux grep命令與$?命令結(jié)合使用技巧。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

今天檢查前同事留下的一個shell腳本時,其中一個腳本中有一個業(yè)務(wù)邏輯處理:要判斷Oracle數(shù)據(jù)庫實例是否啟動,如果數(shù)據(jù)庫實例處于OPEN狀態(tài)的話,則執(zhí)行/運行一些業(yè)務(wù)邏輯操作。腳本大體如下(腳本做了一下混淆和精簡收縮)

up_flag=`${SCRIPT_DIR}/chkdbup.sh?${ORACLE_SID}`

if?[?${up_flag}?-eq?0?];?then?
??.......
??exit
else
??.......
fi

其中chkdbup.sh腳本的內(nèi)容如下:

ps?-ef?|?grep?-i?smon_${1}?|?grep?-v?"grep"?>/dev/null?
echo?$?

Review這個腳本時,我感覺這個腳本的邏輯有問題(我認(rèn)為這個腳本存在一個邏輯"bug"),主要是{up_flag}不為0時則表示數(shù)據(jù)庫實例異常了

if?[?${up_flag}?-eq?0?];?then?
??.......
??exit
else
??.......
fi

在Linux shell腳本中,$?一般表示上一個命令的返回值(執(zhí)行情況),執(zhí)行成功,返回0,其他任何數(shù)值表示上條命令執(zhí)行有錯誤。我認(rèn)為數(shù)據(jù)庫實例OPEN或關(guān)閉或crash的時候,chkdbup.sh這個腳本都會返回0,而不會返回值1,為了驗證我的想法,于是我找了臺測試環(huán)境驗證測試一下。當(dāng)前測試環(huán)境下ORACLE_SID為kerry

[oracle@mytestdb?~]$?ps?-ef?|?grep?-i?smon_kerry?|?grep?-v?"grep"
oracle???1338965???????1??0?Jul05??????????00:00:14?ora_smon_kerry
[oracle@mytestdb?~]$?echo?$?
0

換一個ORACLE_SID,此時因為Oracle實例不存在,就可以模擬實例Crash的情況(懶得關(guān)閉Oracle實例了,這個跟關(guān)閉Oracle實例測試效果一致)

[oracle@mytestdb?~]$?ps?-ef?|?grep?-i?smon_gsp?|?grep?-v?"grep"
[oracle@mytestdb?~]$?echo?$?
1

按照我的想法/認(rèn)知,不管這個數(shù)據(jù)庫實例存在或不存在,ps命令總是會執(zhí)行成功,它就會返回0,而且是永遠返回0,但是測試驗證結(jié)果跟我的想法/認(rèn)知不符合,Why?查了一些資料,然后和同事討論后,終于搞清楚了其中的原因,主要是因為$?命令獲取的上一條命令的返回結(jié)果,而上一條命令中使用了grep命令,而grep命令的返回結(jié)果是這樣的:如果找到了匹配的相關(guān)記錄則返回0,如果沒有找到匹配的相關(guān)記錄則返回1,如果執(zhí)行過程中出錯,就返回2,你可以使用man grep查看相關(guān)說明,具體如下所示:

EXIT?STATUS
???????Normally??the??exit?status?is?0?if?a?line?is?selected,?1?if?no?lines?were?selected,?and?2?if?an?error?occurred.??However,
???????if?the?-q?or?--quiet?or?--silent?is?used?and?a?line?is?selected,?the?exit?status?is?0?even?if?an?error?occurred.

其實,grep命令在HP-UX下也是同樣的返回值,如下所示:

?RETURN?VALUE
??????Upon?completion,?grep?returns?one?of?the?following?values:

?Hewlett-Packard?Company????????????-?3?-???????HP-UX?11i?Version?3?Feb?2007

?grep(1)?????????????????????????????????????????????????????????????grep(1)

???????????0????One?or?more?matches?found.
???????????1????No?match?found.
???????????2????Syntax?error?or?inaccessible?file?(even?if?matches?were
????????????????found).

所以,我的想法/認(rèn)知是錯誤的,而前同事也是在shell腳本中借助grep這個特性和$?來判斷Oracle實例是否處于OPEN狀態(tài)。這個也是一個shell腳本中的一個技巧,只是我很少用這種技巧,另外,由于對grep命令返回的值不清楚(具體來說,不清楚grep沒有匹配到相關(guān)記錄時返回1)。因此鬧了一個烏龍事件。文章來源地址http://www.zghlxwxcb.cn/news/detail-556273.html

到了這里,關(guān)于Linux grep命令與$?命令結(jié)合使用技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 1.Git使用技巧-常用命令2

    1.Git使用技巧-常用命令2

    提示:這里可以添加本文要記錄的大概內(nèi)容: 本地倉庫整理分為整理上一次提交和整理多次提交 1.整理上一次提交: 把當(dāng)前暫存區(qū)里的內(nèi)容合并到上一次commit里,而且還可以修改上一次提交的message信息。 上面命令執(zhí)行后,跳出一個VIM編輯框(如左下圖),此時我們可以修改

    2024年02月13日
    瀏覽(16)
  • 1.Git使用技巧-常用命令3

    1.Git使用技巧-常用命令3

    分支介紹: Master : 穩(wěn)定壓倒一切,禁止尚review和測試過的代碼提交到這個分支上,Master上的代碼是可以隨時部署到線上生產(chǎn)環(huán)境的。 Develop :開發(fā)分支,我們的持續(xù)集成工作在這里,code review過的代碼合入到這里,我們以下要講的BUG fix和feature開發(fā)都可以基于develop分支拉取

    2024年02月13日
    瀏覽(13)
  • 1.Git使用技巧-常用命令1

    1.Git使用技巧-常用命令1

    創(chuàng)建遠端倉庫: git init – bare // 創(chuàng)建遠端裸倉庫; 遠端倉庫別名: origin 本地倉庫: git clone … 創(chuàng)建遠程倉庫 1.創(chuàng)建git賬號和git用戶組 2.創(chuàng)建git倉庫 3.禁止git用戶登錄shell,這樣git通過sh服務(wù)登錄會被拒絕(可選) 4. 創(chuàng)建本地倉庫 比如在我的windows電腦創(chuàng)建本地倉庫文件夾 然后

    2024年02月13日
    瀏覽(21)
  • Git常用命令,配合GitHub的使用技巧

    Git常用命令,配合GitHub的使用技巧

    1、git init:初始化倉庫 2、git status:查看倉庫的狀態(tài) 工作樹和倉庫在被操作過程中,狀態(tài)會不斷發(fā)生變化。在Git操作過程中常用git status 來查看當(dāng)前狀態(tài),是基本的操作。 3、git add:向暫存區(qū)中添加文件 如果只是利用Git倉庫創(chuàng)建了文件,那么文件并不會被記入Git 倉庫的版本

    2024年01月23日
    瀏覽(34)
  • HP-UX下du命令使用技巧

    本人習(xí)慣了Linux環(huán)境的du命令,在HP-UX下,發(fā)現(xiàn)du命令真的非常難用,有種讓人很難受的感覺。主要是因為HP-UX下的du命令參數(shù)比Linux平臺du命令參數(shù)要少很多,尤其是沒有-h這個參數(shù),它只能以kb形式顯示文件/文件夾的大小,對于我來說,看起來非常不直觀。下面是工作中,HP-

    2023年04月27日
    瀏覽(22)
  • 【adb命令】Android實用技巧之a(chǎn)db命令:getprop,setprop命令使用

    一、getprop 1.1 getprop簡介 getprop命令的作用就是從系統(tǒng)的各種配置文件中讀取一些設(shè)備的信息。這些文件在我們的手機設(shè)備中是可以找到的。 1.2 查詢所有的配置 會列出所有的配置信息 這些配置中以ro開頭的是只讀屬性。 1.3 查看單個配置信息 可以在adb shell getprop后面加屬性名

    2024年02月04日
    瀏覽(28)
  • 【Python beautifulsoup】詳細(xì)介紹beautifulsoup庫的使用方法,包括安裝方式、基本用法、常用方法和技巧,以及結(jié)合lxml和parsel的具體使用場景和區(qū)別。

    【Python beautifulsoup】詳細(xì)介紹beautifulsoup庫的使用方法,包括安裝方式、基本用法、常用方法和技巧,以及結(jié)合lxml和parsel的具體使用場景和區(qū)別。

    Python beautifulsoup庫是一個強大的Web抓取和解析庫,它提供了豐富的功能和簡單易用的API,可以幫助我們處理HTML和XML文檔,從中提取數(shù)據(jù),進行數(shù)據(jù)清洗和處理。beautifulsoup庫基于Python標(biāo)準(zhǔn)庫中的html.parser模塊,同時還可以與第三方解析庫lxml和parsel配合使用,提供更高效和靈活的

    2024年02月04日
    瀏覽(53)
  • 【Linux】5、使用 Linux 快捷按鍵小技巧

    【Linux】5、使用 Linux 快捷按鍵小技巧

    ?? ① 可用于強制停止某些程序的運行 ?? ② 若命令輸入錯誤,可用它退出當(dāng)前命令 ?? ① 退出登錄的賬戶 ?? ② 退出某些特定程序的專屬頁面 ?? ③ 不能用于退出【vim】 python 是 Linux 操作系統(tǒng)自帶的 ?? 用于查看歷史輸入過的命令 ?? 可通過 !命令前綴 快速執(zhí)行第一個匹

    2024年02月03日
    瀏覽(18)
  • 【一些隨筆】淺析 Linux和Windows:系統(tǒng)介紹、操作差異與使用技巧解析

    【一些隨筆】淺析 Linux和Windows:系統(tǒng)介紹、操作差異與使用技巧解析

    Linux和Windows系統(tǒng)的操作差異; Linux系統(tǒng)介紹、系統(tǒng)監(jiān)控和優(yōu)化技巧、Shell腳本編程技巧、一些命令使用技巧; Windows系統(tǒng)介紹、優(yōu)化和加速技巧、一些在Windows系統(tǒng)下常用的快捷鍵; 在使用Linux和Windows時,有一些事情可能在Linux上較為順理成章,而在Windows上可能令人費解。比如

    2024年02月13日
    瀏覽(20)
  • 【通過一個腳本將多個實驗按序跑起來,無需人工逐個調(diào)試 & Linux使用技巧】

    在服務(wù)器上跑實驗時,通常需要跑多次實驗,但這些實驗的差異之處僅有一兩處參數(shù)的變動,如果在服務(wù)器盯著一個一個的跑,勢必需要消耗大量的精力和時間; 因此,將跑所有實驗的指令全部匯總到一個腳本中,只需要run一個腳本即可,無需人工變更; 還可以將每個跑完

    2024年02月15日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包