Bash的&&,||邏輯運算

Bash的&&,||邏輯運算

bash里的true和false并不是我們通常所認為的0和1。 true和false是shell的內置命令,返回邏輯值。

$?是一個特殊的變量,存放有上一個程序的結束狀態。 在shell里面,把0作為程序是否成功結束的標志。

例如:

$ true
$ echo
$?
0
$ false
$ echo
$?
1

有時候,下一條命令依賴前一條命令是否執行成功。
如:在成功地執行一條命令之后再執行另一條命令,或者在一條命令執行失敗后再執行另一條命令等。
shell 提供了 && 和 || 來實現命令執行控制的功能,shell 將根據 && 或 || 前面命令的返回值來控制其后面命令的執行。

cmd1 && cmd2

  1. 若 cmd1 運行完畢且正確運行($?=0),則開始運行 cmd2。

  2. 若 cmd1 運行完畢且為錯誤 ($?≠0),則 cmd2 不運行。

cmd1 || cmd2

  1. 若 cmd1 運行完畢且正確運行($?=0),則 cmd2 不運行。

  2. 若 cmd1 運行完畢且為錯誤 ($?≠0),則開始運行 cmd2。

其實就是課堂上說的短路運算:
與運算,第一個為0,結果必定為0;第一個為1,第二個必須要參與運算; 或運算,第一個為1,結果必定為1;第一個為0,第二個必須要參與運算

驗證回傳值:

#!/bin/bash
true&&true; echo $?
true&&false; echo $?
false&&true; echo $?
false&&false; echo $?
true||true; echo $?
true||false; echo $?
false||true; echo $?
false||false; echo $?

[blog@localhost ~]$ sh test.sh

0
1
1
1
0
0
0
1

常用的條件判斷式

command1 && command2 || command3

如果command1成功運行,回傳$0,運行command2,||得到回傳值$0,command3不會運行;
如果command1運行失敗,command1 && command2 回傳$1,||得到回傳值$1,command3運行成功。

原創文章,作者:Net18_木水,如若轉載,請注明出處:http://www.www58058.com/14476

(3)
Net18_木水Net18_木水
上一篇 2016-04-11
下一篇 2016-04-11

相關推薦

  • Linux運維不想早死的方法 一

    Linux運維不想早死的方法 一 為了提高工作效率,減少工作時間,愛惜生命,遠離輻射;務必做好以下幾點: 1,一定用快捷鍵         這里簡單的說下幾個常用的快捷按鍵。 Ctrl + l     清屏,相當于clear命令。 Ctrl…

    Linux干貨 2017-03-26
  • proxy_pass轉發路徑

    一、引言 在nginx中配置proxy_pass時,proxy_pass后面的路徑最后面加“/”和不加“/”會有所區別。加“/”時,nginx不會代理location部分,不加“/”時,nginx會同時代理location部分。下面通過實驗來證明。 二、實驗 實驗環境簡要說明:     node1為httpd服務器(1…

    Linux干貨 2017-01-12
  • RAID詳解

    1、什么是RAID RAID:獨立硬盤冗余陣列,舊稱廉價磁盤冗余陣列,簡稱磁盤陣列。其基本思想就是將多個相對便宜的硬盤結合起來,成為一個磁盤陣列,是性能達到甚至超過一個昂貴、容量巨大的硬盤,根據選擇的版本不同,RAID比單顆硬盤有以下一個或多個方面的好處:增強數據集成度,增強容錯功能,增加處理量或容量。目前應用較多的有RAID0,RAID1,RAID4,RA…

    Linux干貨 2017-01-03
  • 系統基礎之用戶,組管理作業題

    、創建testuser uid 1234,主組:bin,輔助組:root,ftp,shell:/bin/csh home:/testdir/testuser 1 2 3 [root@wen-7 ~]# useradd -u 1234 -g bin -G root,ftp&nbsp…

    Linux干貨 2016-08-04
  • iptables

    一、機制 部隊大院、高檔私人住宅區都是在一個被保護起來的范圍內,要想進入只能從各個大門進入,在進入的時候還在門口出示證件、或者是指紋識別、或者是保安身份認證等,只有通過了這些檢查才能進入到大院、住宅區內部。 Linux系統也是這么一個大院,netfilter就是這個大院的圍墻,prerouting、input、output、forward、postrouti…

    Linux干貨 2017-01-13
  • shell腳本基礎

    shell腳本基礎 基本介紹 Shell腳本與Windows/Dos下的批處理相似,也就是用各類命令預先放入到一個文件中,方便一次性執行的一個程序文件,主要是方便管理員進行設置或者管理用的。但是它比Windows下的批處理更強大,比用其他編程程序編輯的程序效率更高。換一種說法也就是,shell script是利用shell的功能所寫的一個程序,這個程序是使用…

    2017-07-01
欧美性久久久久