linux - 带有 getopt 的命令行参数无法正常工作

标签 linux bash getopt sh

我正在为我的 bourne 脚本测试 getopt,我发现了一些非常有趣的结果。

#!/bin/sh

params=$(getopt lLo:p:t: "$*")
exit 0

如果我执行以下操作:

./myscript -z blah -o legal -p another_legal

正如预期的那样,我会得到:

getopt: illegal option -- z
getopt: illegal option --
getopt: illegal option -- b
getopt: illegal option -- l
getopt: illegal option -- a
getopt: illegal option -- h

但是如果我这样做:

./myscript -o legal -p another_legal -z blah 

getopt 没有捕捉到这个。有什么想法吗?

最佳答案

"$*" 将您的函数接收到的所有参数作为单个参数传递给 getopt。所以你实际上是在运行 getopt lLo:p:t: "-o legal -p another..."你想要 "$@" 代替。

关于linux - 带有 getopt 的命令行参数无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17351132/

相关文章:

c++ - 更改操作系统后的段错误 139(核心已转储)C++

c - C表达式未提供正确的输出

c - C 中使用 getopt() 进行变长参数解析

C 的 getopt 无法解析 argv 末尾(或中间)的选项

linux - 管道命令的回显输出

linux - 域重写后的 Nginx 双斜杠

c++ - 替换 sync() 命令

linux - 在 Linux 中定期采样 gpio-pin 的最佳方法是什么?

linux - 以下 "top"命令: top -p `pgrep process-name | tr "\\n" "," | sed 's/,$//' `的语法简单解释是什么

正则表达式在特定字符处停止