【问题标题】:how to write if $var == *如果 $var == * 怎么写
【发布时间】:2022-02-15 02:33:56
【问题描述】:

我正在编写一个脚本,并使用 If 语句设置了一些标志。 例如我的标志设置为

flag=$(-a,-b,-c,-d)

例如我的 If 语句设置为

if echo "$flag" | grep -q -E -o "(-)(a)"; then
        1
fi

我的问题是如何添加另一个 if 语句,如果标志不存在,然后显示错误。 我已经尝试过类似以下的方法,但它不起作用。

if "[[ $flag"=="*" ]]; then
        Error.
fi

有什么建议吗? 谢谢!

【问题讨论】:

  • flag=$(-a,-b,-c,-d) 真的有用吗?你的意思是flag=(-a,-b,-c,-d)
  • @md2perpe 是的,很抱歉 $ 符号是一个错字。但主要的是如果有人输入 -k 例如如何写,它会通知他输入错误。
  • 我删除了标签“flags”,因为您的问题恰好与变量命名“flags”有关,而不是标志本身。我还删除了“Linux”标签,因为 bash 不仅仅在 Linux 上。
  • @DevSolar 好的,谢谢!我对 bash 脚本有点陌生,所以感谢您对标签的帮助:)

标签: bash if-statement


【解决方案1】:

“如果标志不存在”——比如,flag 没有被定义?

你可以对待所有 undefined variables as errors

或者你可以check if the variable is set

【讨论】:

  • 我的意思是如果没有定义标志。如果有人写的 -k 不是 $flag 的一部分,它应该通知它一个错误。
【解决方案2】:

bash 建议使用自己的 $- 变量的解决方案。

将每个标志存储为字符串中的单个字符:

flags="abcd"

然后使用模式匹配来确定是否设置了特定标志:

if [[ $flags = *a* ]]; then
    echo "a is set"
else
    echo "a is not set"
fi

【讨论】:

  • 感谢您的回答。我只对每个标志使用 If,所以我可以一起使用几个标志。当我使用 If-elif-else 时,它​​只需要设置的第一个标志。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 2016-01-30
  • 2011-12-22
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 2011-08-15
相关资源
最近更新 更多