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


22

我有这行文字.bashrc,我想知道这到底是什么意思

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

Answers:


33
  • $- 表示“当前标志”。
  • echo $-返回“ himBH”。这些都是默认值。
  • 因此... [[ $- != *i* ]] && return实际上执行了上面在注释中所说的:它检查是否设置了交互式标志。[[和]]使其为布尔值,因此以“ true”或“ false”结尾。“ false && return”使之继续执行“ true && return”使之执行返回。

默认标志详细说明:

h表示“全部散列”:告诉bash记住通过查询PATH找到的命令的位置。

我是“互动”的:输入输入并返回输出。

m用于“监视器”:启用作业控制

B代表“括号扩展”。这使您可以使用大括号扩展

H是“历史扩展”的意思。这就是使您可以通过在历史记录中加上感叹号开头的编号来重新运行该命令的原因


顺便说说。我有 ...

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

基本上是一样的,但我认为更容易阅读。


6

基本上,这意味着“如果shell标志不包含小写字母i,则在此处停止函数/脚本”。

[[ ]]

表示bash中的条件表达式

$-

表示外壳标志。如果外壳是交互式的,它将包含“ i”(即,您可以键入命令,而不是它正在执行脚本)

!=

仅表示“不等于”。

*i*

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

return

没有任何参数只是意味着停止当前函数或脚本的执行。

&&

是逻辑AND运算符。在这种情况下return,仅当左侧的表达式为true时,才对右侧的表达式求值(执行)。因此,在许多编程语言中,它a && b是的简写if a then b-称为“短路评估”,当您使用它时,它会使编程老师感到疯狂:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.