當前位置: 首頁>>技術教程>>正文


“[[ $- != *i* ]] && return” 是什麽意思?

,

問題描述

我的 .bashrc 中有這條線,我想知道這到底是什麽意思

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

最佳辦法

  • $- 表示 ‘current flags’。

  • echo $- 返回 “himBH”。這些都是默認值。

  • 所以… [[ $- != *i* ]] && return 實際上做了上麵評論中所說的:它檢查是否設置了交互標誌。 [[ 和 ]] 使它成為一個布爾值,因此它以 “true” 或 “false” 結束。 “false && return” 讓它繼續 “true && return” 讓它執行返回。

更詳細地解釋了默認標誌:

h 代表 “hash all”:這告訴 bash 記住它通過查詢 PATH 找到的命令的位置。

i 用於 “interactive”:輸入輸入 &取回輸出。

m 用於 “monitor”:這將啟用作業控製

B 代表 “brace expand”。這允許您使用大括號擴展

H 代表 “history expand”。這使您可以通過在其編號前加上感歎號來從曆史記錄中重新運行命令


順便一提。我有 …

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

我假設基本上做相同但更容易閱讀。

次佳辦法

基本上它的意思是“如果 shell 標誌不包含小寫 i,則在此處停止函數/腳本”。

[[ ]]

表示 bash 中的條件表達式

$-

表示 shell 標誌。如果 shell 是交互式的,它將包含 “i”(即,您可以鍵入命令,而不是執行腳本)

!=

簡單的意思是“不等於”。

*i*

是匹配任何包含 “i” 的通配符模式

return

沒有任何參數隻是意味著停止當前函數或腳本的執行。

&&

是邏輯 AND 運算符。右側的表達式,在本例中為 return ,隻有在左側的表達式為真時才會被計算(執行)。所以在許多編程語言中,a && bif a then b 的簡寫——這被稱為“短路評估”,當你使用它時,它會讓編程老師發瘋:D

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/12838.html,未經允許,請勿轉載。