bash shell 上的命令指定的“ keyword ”选项到底有什么作用set?
set -o keyword
或者
set -k
一个简单的例子就足够我理解了。
通常,要为命令注入环境变量,您可以在命令之前对名称进行赋值,如下所示:
VARIABLE=value bash -c 'echo "$1 $VARIABLE"' bash hello
Run Code Online (Sandbox Code Playgroud)
这将运行bash -c 'echo "$VARIABLE"' bash hello并设置为该命令环境中的VARIABLE字符串。value在这种情况下,该命令将打印hello value(hello来自内联脚本的第一个命令行参数,并且value来自环境变量)。
使用set -o keyword(或set -k) in bash(这是一个非标准 shell 选项),允许在命令行的任何位置进行赋值:
VARIABLE=value bash -c 'echo "$1 $VARIABLE"' bash hello
Run Code Online (Sandbox Code Playgroud)
我从未见过这个选项“在野外”使用过,我假设它只在非常特定的情况下很少使用,因为它从根本上改变了命令的解析方式。