【发布时间】:2022-01-13 12:00:32
【问题描述】:
我有一个用 bash 脚本包装的代码,我想知道是否给出了某个标志 (-b),如果是,则更新我在脚本中的一些变量(称为“x”) .不幸的是,我需要在 bash 脚本上完成此操作,而这里的合成器让我抓狂。我所做的一个小例子是(没有调用我包装的代码):
#!/bin/bash
x=0
while getopts :b opt; do
case $opt in
b) x=1;;
?) echo "";;
esac
done
echo "x is ${x}"
我的问题是我想要传递给命令行的标志不止一个。
我尝试使用:
while getopts :b:f:c opt; do...,但是当我没有在 -b -f ... -c ... 订单中提供标志时,它看起来无法正常工作(当我期望它是 x is 1 时,我得到了 x is 0)。
此外,当我想给出带有 -- 前缀(--frame 而不是 -f)的标志时,这不起作用。
为此目的的代码应该是什么?我尝试了几个选项,但我无法弄清楚合成器到底应该是什么。
提前谢谢你。
【问题讨论】:
-
你的例子对我有用(不是长选项(
--)部分):如果我通过-b,我会得到x is 1。你能提供一个minimal reproducible example吗?