什么;; 在 sh 做什么?

EKo*_*ons 28 shell

如果我尝试a;;b在 sh 中运行,则会收到此错误:

sh: <number>: Syntax error: ";;" unexpected
Run Code Online (Sandbox Code Playgroud)

如果我尝试a;;;b我会得到同样的错误,而;;;不是;;,所以我认为这;;意味着什么,尽管我不知道它是什么意思。

下面是一个例子:

$ echo A;;echo B
sh: 1: Syntax error: ";;" unexpected
$ echo A;;;echo B
sh: 1: Syntax error: ";;" unexpected
$ echo A; ;echo B
sh: 1: Syntax error: ";" unexpected
Run Code Online (Sandbox Code Playgroud)

在这里您可以看到,当我使用; ;而不是;;错误时,错误是不同的,这与我;之前在没有命令的情况下使用的事实有关。;;似乎是一个不同的运营商,虽然我不知道它适用于什么。

Sté*_*las 47

;;在 POSIX shell中的case...esac构造中分隔语句:

case foo in (a) cmd1; cmd2 ;; (b) cmd3; cmd4; esac
Run Code Online (Sandbox Code Playgroud)

要了解命令,您可以运行man that-command. 如果您的寻呼机是less,则可以通过按在手册页中进行搜索/

在这里,您将运行man sh并搜索;;. 某些 shell 支持其他运算符来分隔case语句(如;&in ksh93/ zsh/ bash/ mksh&|in zsh/ mksh;;&in bash)。

  • 如果有很多点击,或者你不记得用 `less` 搜索的转义规则,有时使用 `$ man bash|grep -C1 ';;'` (2认同)