如何更好地在Bash脚本中使用命名命令行参数?

如何更好地在Bash脚本中使用命名命令行参数?,bash,command,arguments,line,named,Bash,Command,Arguments,Line,Named,这是我的示例Bash脚本example.sh: 现在,如果在终端中,我运行bash脚本,如下所示: $ bash ./example.sh "--arg1=value1" "--arg2=value2" 我得到了正确的输出,如: value1 value2 太好了!这意味着我能够使用bash脚本中的变量${arg1}和${arg2}使用传递给参数arg1和arg2的值 我现在对这个解决方案很满意,因为它符合我的目的,但是,任何人都可以建议在bash脚本中使用命名命令行参数的更好的解决方案?您

这是我的示例Bash脚本example.sh:

现在,如果在终端中,我运行bash脚本,如下所示:

$ bash ./example.sh "--arg1=value1" "--arg2=value2"
我得到了正确的输出,如:

value1
value2
太好了!这意味着我能够使用bash脚本中的变量${arg1}和${arg2}使用传递给参数arg1和arg2的值


我现在对这个解决方案很满意,因为它符合我的目的,但是,任何人都可以建议在bash脚本中使用命名命令行参数的更好的解决方案?您可以只使用环境变量:

#!/bin/bash

echo "$arg1"
echo "$arg2"
不需要解析。从命令行:

$ arg1=foo arg2=bar ./example.sh
foo
bar
甚至还有一个shell选项可以让您将指定放置在任何位置,而不仅仅是在命令之前:

$ set -k
$ ./example.sh arg1=hello arg2=world
hello
world

您可以只使用环境变量:

#!/bin/bash

echo "$arg1"
echo "$arg2"
不需要解析。从命令行:

$ arg1=foo arg2=bar ./example.sh
foo
bar
甚至还有一个shell选项可以让您将指定放置在任何位置,而不仅仅是在命令之前:

$ set -k
$ ./example.sh arg1=hello arg2=world
hello
world
“set-k”是什么意思?我喜欢这种解决方案,但在触发bash脚本传递参数之前,必须这样做。有什么自动处理的吗?没有,因为需要调用shell来支持它。“set-k”是用来做什么的?我喜欢这种解决方案,但在触发bash脚本传递参数之前,必须这样做。有什么自动处理的吗?没有,因为需要调用shell来支持它。