Questions tagged «getopts»

5
getopt,getopts还是手动解析-当我想同时支持长选项和长选项时使用什么?
目前,我正在编写具有以下要求的Bash脚本: 它应该可以在各种Unix / Linux平台上运行 它应该同时支持短和(GNU)长选项 我知道这getopts将是可移植性的首选方式,但是AFAIK不支持长选项。 getopt支持长选项,但BashGuide强烈建议不要这样做: 永远不要使用getopt(1)。getopt无法处理空参数字符串或带有嵌入式空格的参数。请忘记它曾经存在。 因此,仍然有手动解析的选项。这容易出错,会产生很多样板代码,我需要自己处理错误(我想自己getopt(s)进行错误处理)。 那么,在这种情况下首选的选择是什么?

5
如何检测到getopts没有传递任何选项?
我有此代码- #getoptDemo.sh usage() { echo "usage: <command> options:<w|l|h>" } while getopts wlh: option do case $option in (w) name='1';; (l) name='2';; (h) name='3';; (*) usage exit;; esac done print 'hi'$name 当我运行时bash getoptDemos.sh(不带选项),它将打印hi而不是调用函数usage。当给出w,h和l以外的选项时,它将调用用法。然后,如果未指定任何选项,它将无法正常工作。 我已经尝试使用?,\?,:到位的*,但我无法实现我想要的。我的意思是所有的docs上getopt说它使用?。 我究竟做错了什么?
19 bash  shell  options  getopts 


1
在非选项参数之后使用getopts解析选项
我在文件中有一个bash脚本,如下所示nepleaks_upd.sh,我希望以此运行./nepleaks_upd.sh bootstrap --branch off。无法接受--branch,但是它的作用是./nepleaks_upd.sh bootstrap -b off。 usage() { echo "Usage: $0 [prepare | up | down] [-b <on/off>]" 1>&2; exit 1; } case "$1" in bootstrap) while getopts ":b:" o; do case "${o}" in b) b=${OPTARG} if [ ${b} == "off" ]; then echo "git clone https://github.com/iPrayag/dotfiles.git" ## logic …

1
使用getopts为一个选项提供两个参数
在下面的代码中,当我给出选项时,r则getopts需要一个参数: while getopts ":hr::l:" opt; do case $opt in r ) echo "Run Numbers - argument = $OPTARG " ;; l ) echo "Latency range - argument = $OPTARG" ;; h ) helptext graceful_exit ;; * ) usage clean_up exit 1 esac done 但是我需要在-r选项之后传递两个参数,而不是一个。是否有捷径可寻?

2
如何处理选项终止—在getopts中
我使用getopts将bash脚本中的参数解析为 while getopts ":hd:" opt; do case $opt in d ) echo "directory = $OPTARG"; mydir="$OPTARG"; shift $((OPTIND-1)); OPTIND=1 ;; h ) helptext graceful_exit ;; * ) usage clean_up exit 1 esac done exeparams="$*" exeparams将保留任何未解析的选项/参数。由于我想使用exeparams来保存要在脚本内执行的命令的选项(该选项可以与脚本自己的选项重叠),因此我想使用-结束传递给脚本的选项。如果我通过 myscript -d myscriptparam -- -d internalparam exeparams 将举行 -- -d internalparam 我现在想删除--将这些参数传递给内部命令的引线。有没有一种优雅的方法可以做到这一点,或者我可以--从getopts中获得仅保留其余部分的字符串?
9 bash  getopts 

5
bash getopts,仅短选项,全部需要值,自己进行验证
我正在尝试建立一个接受各种选项的shell脚本,这getopts似乎是一个不错的解决方案,因为它可以处理选项和参数的变量顺序(我认为!)。 我只使用简短选项,每个简短选项都需要一个相应的值,例如::./command.sh -a arga -g argg -b argb但我希望允许以非特定顺序输入选项,因为大多数人习惯于使用Shell命令。 另一点是,我希望对case语句参数值进行自己的检查,最好是在语句中进行检查。原因是我:)在case陈述中对的测试产生了不一致的结果(可能是由于缺乏理解)。 例如: #!/bin/bash OPTIND=1 # Reset if getopts used previously if (($# == 0)); then echo "Usage" exit 2 fi while getopts ":h:u:p:d:" opt; do case "$opt" in h) MYSQL_HOST=$OPTARG ;; u) MYSQL_USER=$OPTARG ;; p) MYSQL_PASS=$OPTARG ;; d) BACKUP_DIR=$OPTARG ;; \?) echo …
8 bash  getopts 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.