`set -o keywords` 在 bash 上做什么?

tes*_*ter 9 bash set

bash shell 上的命令指定的“ keyword ”选项到底有什么作用set

选项:

set -o keyword

或者

set -k

一个简单的例子就足够我理解了。

Kus*_*nda 8

通常,要为命令注入环境变量,您可以在命令之前对名称进行赋值,如下所示:

VARIABLE=value bash -c 'echo "$1 $VARIABLE"' bash hello
Run Code Online (Sandbox Code Playgroud)

这将运行bash -c 'echo "$VARIABLE"' bash hello并设置为该命令环境中的VARIABLE字符串。value在这种情况下,该命令将打印hello valuehello来自内联脚本的第一个命令行参数,并且value来自环境变量)。

使用set -o keyword(或set -k) in bash(这是一个非标准 shell 选项),允许在命令行的任何位置进行赋值:

VARIABLE=value bash -c 'echo "$1 $VARIABLE"' bash hello
Run Code Online (Sandbox Code Playgroud)

我从未见过这个选项“在野外”使用过,我假设它只在非常特定的情况下很少使用,因为它从根本上改变了命令的解析方式。