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 11:40
下一篇 2016-04-11 11:49

相關推薦

  • centos7上實現corosync V2 + pacemaker + pcs | crmsh備忘錄

    1、集群配置的前提: 一、時間同步(ntpdate做crontab定時任務) 二、主機名和IP相互解析 三、基于ssh密鑰主機互信 #ssh-keygen -t rsa #ssh-copy-id -i   集群的全生命周期管理工具: pcs: agent(pcsd) crmsh: agentless (pssh)     2、安…

    2017-11-15
  • VIM編輯器

    VIM是什么? Vim是從VI發展出來的一個文本編輯器,擁有許多豐富的功能,便于編程開發,在程序員中被廣泛使用,是類Unix系統用戶最喜歡的功能強大的跨平臺文本文件編輯工具。 為什么要用VIM? vi編輯器是所有類UNIX系統下標準的編輯器,他是我們使用Linux系統不能缺少的工具。對于所有類UNIX系統的任何版本,vi編輯器是完全相同的。而vim是從VI發…

    2017-06-03
  • 馬哥教育網絡班21期+第12周課程練習 ?

    1、請描述一次完整的http請求處理過程;   1)客戶端和服務器端建立連接。服務器接收或者拒絕請求。   2)服務器端接收客戶端請求。接收來自于網絡的請求報文中對某資源的一次請求。對請求的處理響應,可分為單進程(啟動一個進程處理請求,一次只處理一個)和多進程(并行啟動多個進程,每個進程處理一個請求)。  &…

    Linux干貨 2016-10-09
  • MHA+keepalived 高可用MYSQL集群

    一、MHA簡介 二、試驗環境及要求 三、部署MHA 四、測試MHA集群功能 一、MHA簡介     MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案。在MySQL故障切換過程中,MHA能做到在0~30秒之內手動或自動(結合腳本)完成數據庫的故障切換操作,并且在…

    2017-02-25
  • Linux編譯安裝

    Linux編譯安裝    Linux上真正可以執行的文件是二進制文件,這些可以執行的二進制文件是哪兒來的呢?首先,必須要寫程序的源代碼,然后,由編譯程序將程序的源代碼 編譯成二進制形式。源代碼是由程序員編寫的,使用特定的程序語言,如C,C++,Java,Python。但是機器看不懂這些語言,所以要使用編譯程序將這些語言編寫的源代碼編譯成機…

    Linux干貨 2016-08-24
  • 冒泡算法,源碼安裝http,yum淺談

    生成10個隨機數,采用冒泡算法進行升序或降序排序 #!/bin/bash #author:maoxiong QQ:111111111 #verson:1.0  date:2016-08  #illustrate: declare -a array #create 10 randomnum for num in {0..9} do &nbs…

    Linux干貨 2016-08-26
欧美性久久久久