【发布时间】:2013-06-25 16:22:42
【问题描述】:
最近我尝试在这样的 shell 脚本中传递参数:
$./myscript.sh <sourcefile> <destinationfile> -o
脚本应该读入一个源文件和一个目标文件 - 两者都应该是强制性的 - 然后最后检查额外的可选参数。但是,当尝试使用 getopts 解析选项 -o 时 - 它永远找不到它。它总是“假”或“0”。它只识别选项-o当它在其他参数之前传递时!
$./myscript.sh -o <sourcefile> <destinationfile>
这是强制性的,它只能以这种方式工作吗?当我在脚本中搜索规则、约定或实践时,我从来没有找到这些基本信息,只是通过反复试验才发现它,浪费了大量时间……我还想知道复制命令过程是如何工作的,因为它也混合可选参数和非可选参数
【问题讨论】:
-
在调用 getopts 之前,您始终可以捕获并关闭前 2 个参数。
-
这最终是有道理的。我之前尝试将它们放在前面,但在调用 getopts 之前忘记将它们移开。所以它没有用。谢谢大佬,我马上试试!