我有以下命令:command.sh bar -b=FOO
我试图用以下内容来解析它:getopt "m::b::" "$@"
在Linux下,结果是:-b =FOO -- command.sh bar
在 MacOS 下,结果是:-- command.sh bar -b=FOO。所以根本没有解析它。我尝试过-bFOO,-b FOO但结果相同,它没有被解析。
如何解决这个问题?我需要一个可以在 Mac 和 Linux 上运行的跨平台 bash 解决方案。
getopt是一种外部实用程序且特定于版本,因此您需要将 Mac 上的版本与您在 Linux 上习惯的版本相匹配。
相反,使用内置的getopts 。它是便携式的,开箱即用,可在任何 POSIX shell 中使用。
while getopts "m::b::" opt; do
case ${opt} in
m) # do 'm' thing
echo M
;;
b) # do 'b' thing
echo B
;;
esac
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
830 次 |
| 最近记录: |