getopts

将所有参数传递给另一个使用 getopts 的源 bash 脚本
getopts

将所有参数传递给另一个使用 getopts 的源 bash 脚本

我正在尝试将所有参数从一个脚本传递到另一个脚本。但是,当获取其他脚本时会出现问题;所有参数均未正确传递。 首先.sh: #!/usr/bin/bash while getopts a option do case "${option}" in a) echo 'OptionA:somevalue';; esac done # This way works ./second.sh "$@" # Does not work when source command is used #source ./second.s...

Admin

bash 中的脚本参数
getopts

bash 中的脚本参数

我正在开发一个需要两个脚本参数并将它们用作脚本中的变量的脚本。我无法让这个工作,也无法找出我做错了什么。我看到问题是第二个参数,正如我在一些测试中看到的那样(如本文底部所述),它没有被读取。 这是代码: #!usr/bin/bash help() { echo "" echo "Usage: $0 -p patch_level -e environment" echo -e "\t-p Patch level that you are tryin to update the server" echo -e "\t-e...

Admin

Bash getopts 错误处理
getopts

Bash getopts 错误处理

这是我玩Getopts时遇到的错误。以下是我一直在执行脚本时简单监听 3 个选项的代码片段。 while getopts "vcn" opt; do case $opt in v) echo "Print V" ;; c) echo "Print C" ;; n) echo "Print N" ;; *) echo "Invalid Option" && exit 1 ;; esac done 我不确定为什么在执行此脚本时会出现以下错误,即使我已经使用 *) 选项处理了错误。错误句柄如下图所...

Admin

bash getopts 如何知道调用有哪些参数
getopts

bash getopts 如何知道调用有哪些参数

如果getopts是 bash 函数,根据我的理解,您需要传递$@- 整个参数以便getopts让函数知道您有什么样的参数才能继续,对吗? 在我看来,你不需要它,那么如何getopts知道我在当前范围内有哪些参数呢?它是否有办法像其他高级语言一样跟踪先前的调用? while getopts abcde opt; do ˄˄˄˄˄ <-- you only need to pass the argument labels here, how getopts knows what...

Admin

如何使用 bash 脚本中的 getopts 选项立即退出
getopts

如何使用 bash 脚本中的 getopts 选项立即退出

我尝试过什么。 #!/bin/bash # set -e echo hello while getopts sr o; do case $o in s) echo "no" yell() { echo "$0: $*" >&2; } die() { yell "$*"; exit 111; } try() { "$@" || die "cannot $*"; } ;; r) echo "yes" ...

Admin

冒号 (:) 对于 getopts 意味着什么?
getopts

冒号 (:) 对于 getopts 意味着什么?

我正在尝试解析我的脚本的选项,getopts并且我决定最好在 POSIX 标准中阅读它,因为它通常非常有帮助。这描述部分关于冒号 (:) 的使用相当含糊可选字符串,所以我在互联网上查找了人们如何使用 : 和 getopts ,现在我很困惑。冒号在命令中的作用是什么getopts abc:d name以及我如何通过阅读标准来知道? ...

Admin

是否有工具或宏处理器能够紧凑地表达 BASH CLI 接口?
getopts

是否有工具或宏处理器能够紧凑地表达 BASH CLI 接口?

我正在使用以下样板 CLI 模式编写脚本: usage(){ echo "$0 yada yada" ... echo } for arg in "$@"; do case "$arg" in '--help|-help') set -- "$@" '-h';; ... esac done OPTIND=1 while getopts 'h...' opt; do case "$opt" in 'h') usage; exit 0;; ... esac done shift $((OPTI...

Admin

Unix 系统中的多字符选项
getopts

Unix 系统中的多字符选项

我有一个用例,其中我需要支持多个字符选项。目前我正在使用 getopts 的单字符选项。多字符选项是可取的。执行此操作的最佳方法是什么?我遇到过为这个用例实现手动解析器的文章,但这对于性能来说是最佳的吗? 我希望像 -ab 这样的东西仅被视为 -ab 而不是 -a -b 。这也是一种良好的编码习惯吗? 这样做只是为了使选项更有意义,而不是单个字符选项,后者不提供有关该选项的完整信息。 重要提示:我还想要带有这些多字符选项的 optargs 。示例 -ab "sdfd" 。 这是代码 while getopts ":s:p:q:j:o" opt; do c...

Admin

如何在 POSIX shell 中使用 getopts 检查传递的选项? (报告、计数并丢弃。)
getopts

如何在 POSIX shell 中使用 getopts 检查传递的选项? (报告、计数并丢弃。)

如何使用检查传递的选项getopts(手册页)在 POSIX shell 中? (报告、计数并丢弃。) 我的想法是这样的:我的许多脚本不采用任何选项(甚至不是-h为了帮助,我help直接过渡到)。因此,如果给出任何数量的选项(开关),我想对它们进行计数,报告它们,然后简单地丢弃他们(不要对他们做任何操作)。 让我们包括所有0-9, 以及下层和上层a-z( A-Z)。 更新:我的许多脚本甚至不接受文件作为参数,这个脚本就是这种情况。 用法帮助看起来像这样: usage () { cat << EOF MPV video player subti...

Admin

getopts OPTIND 的工作原理
getopts

getopts OPTIND 的工作原理

我想了解如何OPTIND工作getopts。如果我想跳过前几个位置参数,我应该如何设置OPTIND? 而且因为 OPTIND 不会自动重置,所以我需要知道如何在多次调用 getopts 之间准确地手动重置。 因为在第一次调用时我收到报告的错误 gopi -z /usr/local/bin/bash: option requires an argument -- z 但是第二次调用,没有报错 gopi -z 这是函数 gopi () { local parg="" while (( $# > 0 )); do parg="$1"...

Admin

getopts 超过 4 个解析器参数
getopts

getopts 超过 4 个解析器参数

我想使用下面的代码在脚本getopts中解析多个参数。bash while getopts b:B:m:M:T flag do case "${flag}" in b) rbmin=${OPTARG};; B) rbmax=${OPTARG};; m) mbmin=${OPTARG};; M) mbmax=${OPTARG};; T) sigType=${OPTARG};; esac done echo $rbmin,$rbmax,$mbmin,$mbmax, $...

Admin

如何在 bash 脚本中混合普通参数和标记参数?
getopts

如何在 bash 脚本中混合普通参数和标记参数?

例如,gcc 接受不带任何标志的输入文件和带有以下-o标志的输出文件: gcc input.c -o output.out 或者 gcc -o output.out input.c 我正在创建一个随机密码生成器 bash 脚本,用户应该能够分别使用-s、-l、-u标志指定特殊字符、小写字符和大写字符的数量。他们还应该能够在没有任何标志的情况下指定密码的长度。 用法示例: ./randompassword.sh -s2 -u2 -l3 16 应表示包含 2 个特殊字符、2 个大写字符、3 个小写字符且长度为 16 的密码。 我可以getopts像这样解析标志:...

Admin

getopts 参数可以与其他输入结合使用吗?
getopts

getopts 参数可以与其他输入结合使用吗?

我正在编写一个脚本,该脚本将字符串作为输入以及用户可以通过使用参数作为指示符来选择的其他选项。换句话说,是这样的: ./script "My input string" -pxz 或者 ./script -pxz "My input string" 但我遇到了以下问题。输入非 getopts 样式的参数后, getopts 命令似乎停止工作。检查一下,例如: #!/bin/bash while getopts "ab" arg; do echo $arg received done 当我们运行它时,我们得到: $ ./example.sh -...

Admin

识别是否存在并从 shell args 中删除特定参数
getopts

识别是否存在并从 shell args 中删除特定参数

我必须检查脚本的 shell 参数中是否存在特定参数“java8”,如果存在则将其删除。我还希望将其存储在其他变量中,但希望将其从我的 $* 中删除。 我尝试使用 getopts 检查 arg 是否存在,但我不知道如何删除 argument 。 请注意 - 检查“java8”的 arg 位置未知,我可以在任何地方 while getopts "f:" flag do case $flag in f) echo $OPTARG ;; esac done echo $* ~ 所...

Admin

使用getopt直接获取选项值
getopts

使用getopt直接获取选项值

我对 的经验不是很丰富getopt,但在我见过的所有代码中,它仅用于重新排序程序参数,然后使用 switch/case 来解码正在使用哪些选项和参数,因此通常需要解析(或跳过)全部同时进行。 如果我不想进行此处理,而是将选项视为字典并在实际需要时选取它们怎么办?类似的东西get_option_value -o "x:"会返回实际的参数值,或者标志的 true/false。 显然,这可以轻松地手动完成,并且在复杂性方面总是更有效,但我想实际上存在这种“易于使用”的功能,只是我没有偶然发现它。 ...

Admin