如何解决简洁地将 BASH 命令字符串拆分为参数和标志
我的 BASH 命令字符串 ($@
) 如下所示:cmd -arg1 foo bar --flag1 --flag2
标志在 args 之后,我在 args 中没有任何尴尬的问题(我正在构建一个供我自己使用的内部工具)。
如何将 -arg1 foo -arg2 bar
提取到 $args
并将 --flag1 --flag2
提取到 $flags
?
解决方法
以下有效,尽管我怀疑它不是最佳的:
> echo $x
cmd -arg1 foo bar --flag1 --flag2
> flags="--${x#*--}"
> echo $flags
--flag1 --flag2
> before_flags=${x%%"$flags"}
> echo $before_flags
cmd -arg1 foo bar
> set $before_flags
> echo $1
cmd
> echo $2
-arg1
> echo $3
foo
> echo $4
bar
Ref: https://mywiki.wooledge.org/BashFAQ/100 -- 如何在 bash 中进行字符串操作?
参考:https://mywiki.wooledge.org/BashFAQ/035 -- 如何轻松处理脚本中的命令行选项和参数?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。