连字符作为特殊参数的含义?

Tim*_*Tim 8 bash

https://www.gnu.org/software/bash/manual/html_node/Special-Parameters.html

- (连字符。)扩展到调用时指定的当前选项标志,由 set 内置命令或由 shell 本身设置的那些标志(例如 -i 选项)。

我不确定它说的是什么。你能举一些例子来说明连字符参数的含义吗?

Mic*_*mer 9

您可以echo $-查看当前启用的 shell 选项:

$ echo $-
himBH
Run Code Online (Sandbox Code Playgroud)

这些是您可以-在 shell 调用时提供的选项— bash -h -B— 或稍后使用set.

这些标志在的文档set中定义。我上面的选项是:

  • -h 查找并记住(散列)命令,因为它们被查找以供执行。默认情况下启用此选项。
  • -m 作业控制已启用(请参阅作业控制)。所有进程都在一个单独的进程组中运行。当后台作业完成时,shell 会打印一行包含其退出状态的行。
  • -B shell 将执行大括号扩展(请参阅大括号扩展)。该选项默认开启。
  • -H 使能够 '!' 样式历史替换(请参阅历史交互)。默认情况下,此选项对于交互式 shell 处于启用状态。

i交互式外壳

如果我更改活动选项,例如 with set -x,我将获得一个新值$-

$ set -x +h
$ echo $-
imxBH
Run Code Online (Sandbox Code Playgroud)