欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell退出狀態(tài)的使用

 更新時間:2021年03月01日 09:25:23   投稿:zx  
這篇文章主要介紹了Shell退出狀態(tài)的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

每一條 Shell 命令,不管是 Bash 內置命令(例如 cd、echo),還是外部的 Linux 命令(例如 ls、awk),還是自定義的 Shell 函數,當它退出(運行結束)時,都會返回一個比較小的整數值給調用(使用)它的程序,這就是命令的退出狀態(tài)(exit statu)。

很多 Linux 命令其實就是一個C語言程序,熟悉C語言的讀者都知道,main() 函數的最后都有一個return 0,如果程序想在中間退出,還可以使用exit 0,這其實就是C語言程序的退出狀態(tài)。當有其它程序調用這個程序時,就可以捕獲這個退出狀態(tài)。

if 語句的判斷條件,從本質上講,判斷的就是命令的退出狀態(tài)。

按照慣例來說,退出狀態(tài)為 0 表示“成功”;也就是說,程序執(zhí)行完成并且沒有遇到任何問題。除 0 以外的其它任何退出狀態(tài)都為“失敗”。

之所以說這是“慣例”而非“規(guī)定”,是因為也會有例外,比如 diff 命令用來比較兩個文件的不同,對于“沒有差別”的文件返回 0,對于“找到差別”的文件返回 1,對無效文件名返回 2。

有編程經驗的讀者請注意,Shell 的這個部分與你所熟悉的其它編程語言正好相反:在C語言、C++、Java、Python 中,0 表示“假”,其它值表示“真”。

在 Shell 中,有多種方式取得命令的退出狀態(tài),其中 $? 是最常見的一種。上節(jié)《Shell if else》中使用了 (()) 進行數學計算,我們不妨來看一下它的退出狀態(tài)。請看下面的代碼:

#!/bin/bash
read a
read b
(( $a == $b ));
echo "退出狀態(tài):"$?

運行結果1:
26
26
退出狀態(tài):0

運行結果2:
17
39
退出狀態(tài):1

退出狀態(tài)和邏輯運算符的組合

Shell if 語句的一個神奇之處是允許我們使用邏輯運算符將多個退出狀態(tài)組合起來,這樣就可以一次判斷多個條件了。

Shell 邏輯運算符

運算符 使用格式 說明
&& expression1 && expression2 邏輯與運算符,當 expression1 和 expression2 同時成立時,整個表達式才成立。

如果檢測到 expression1 的退出狀態(tài)為 0,就不會再檢測 expression2 了,因為不管 expression2 的退出狀態(tài)是什么,整個表達式必然都是不成立的,檢測了也是多此一舉。
|| expression1 || expression2 邏輯或運算符,expression1 和 expression2 兩個表達式中只要有一個成立,整個表達式就成立。

如果檢測到 expression1 的退出狀態(tài)為 1,就不會再檢測 expression2 了,因為不管 expression2 的退出狀態(tài)是什么,整個表達式必然都是成立的,檢測了也是多此一舉。
! !expression 邏輯非運算符,相當于“取反”的效果。如果 expression 成立,那么整個表達式就不成立;如果 expression 不成立,那么整個表達式就成立。

【實例】將用戶輸入的 URL 寫入到文件中。

#!/bin/bash
read filename
read url
if test -w $filename && test -n $url
then
  echo $url > $filename
  echo "寫入成功"
else
  echo "寫入失敗"
fi

在 Shell 腳本文件所在的目錄新建一個文本文件并命名為 urls.txt,然后運行 Shell 腳本,運行結果為:

urls.txt↙
http://jb51.net/shell/
寫入成功

test 是 Shell 內置命令,可以對文件或者字符串進行檢測,其中,-w選項用來檢測文件是否存在并且可寫,-n選項用來檢測字符串是否非空。下節(jié)《Shell test》中將會詳細講解。

>表示重定向,默認情況下,echo 向控制臺輸出,這里我們將輸出結果重定向到文件。

到此這篇關于Shell退出狀態(tài)的使用的文章就介紹到這了,更多相關Shell退出狀態(tài)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Linux忘記root密碼進入單用戶模式切換運行級別切換用戶

    Linux忘記root密碼進入單用戶模式切換運行級別切換用戶

    這篇文章主要介紹了Linux忘記root密碼進入單用戶模式切換運行級別切換用戶,需要的朋友可以參考下
    2019-08-08
  • Linux 中unzip解壓時中文亂碼的解決辦法

    Linux 中unzip解壓時中文亂碼的解決辦法

    這篇文章主要介紹了Linux 中unzip解壓時中文亂碼的解決辦法的相關資料,這里提供兩種解決辦法,希望能通過本文幫助到大家,需要的朋友可以參考下
    2017-09-09
  • shell產生隨機數七種方法的實現

    shell產生隨機數七種方法的實現

    這篇文章主要介紹了shell產生隨機數七種方法的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Shell 函數參數

    Shell 函數參數

    這篇文章主要為大家分享了Shell 函數參數,方便學習shell腳本的朋友
    2014-09-09
  • linux 下獲取當前工作路徑的實例

    linux 下獲取當前工作路徑的實例

    今天小編就為大家分享一篇linux 下獲取當前工作路徑的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Shell腳本模擬多線程功能分享

    Shell腳本模擬多線程功能分享

    這篇文章主要介紹了Shell腳本模擬多線程功能分享,本文直接給出實現代碼,代碼中有詳細的注釋,需要的朋友可以參考下
    2014-11-11
  • bash shell和dash shell的區(qū)別詳解

    bash shell和dash shell的區(qū)別詳解

    本文主要介紹了bash shell和dash shell的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • shell?數組?${array[@]}?${array[*]}的使用及區(qū)別解析

    shell?數組?${array[@]}?${array[*]}的使用及區(qū)別解析

    shell中用括號來表示數組,數組元素間使用空格隔開,這篇文章主要介紹了shell?數組?${array[@]}?${array[*]}的使用及區(qū)別,需要的朋友可以參考下
    2023-06-06
  • 學習linux常用命令(推薦)

    學習linux常用命令(推薦)

    本文給大家分享小編日常整理的有關linux常用命令,對大家今后的工作學習非常有幫助,對linux常用命令知識感興趣的朋友一起學習吧
    2016-11-11
  • shell腳本批量執(zhí)行指定路徑下sql腳本的實現

    shell腳本批量執(zhí)行指定路徑下sql腳本的實現

    本文主要介紹了shell腳本批量執(zhí)行指定路徑下sql腳本的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02

最新評論