我有以下命令:
command.sh -b=FOO
我正在尝试用以下内容解析它:
getopt "m::b::" "$@"
Linux下,结果为:
-b =FOO -- command.sh
MacOS下,结果为:
-- command.sh -b=FOO
。所以它根本没有被解析。我尝试了 -bFOO
和 -b FOO
但结果相同,它没有被解析。
如何解决?我需要一个跨平台的 bash 解决方案,它可以在 Mac 和 Linux 上运行。
getopt
是一个外部实用程序和特定版本,因此您需要将 Mac 上的版本与您在 Linux 上习惯使用的版本相匹配。while getopts "m::b::" opt; do
case ${opt} in
m) # do 'm' thing
echo M
;;
b) # do 'b' thing
echo B
;;
esac
done