【问题标题】:How to make if conditions from array in bash [duplicate]如何从bash中的数组中创建if条件[重复]
【发布时间】:2020-07-26 15:37:34
【问题描述】:

我有这样的 if 条件;

if [ "$var" != "something" ] && [ "$var" != "something2" ] && [ "$var" != "something3" ] && [ "$var" != "something4" ]; then
    # do something
fi

检查$var 是否不等于任何给定参数,然后采取相应措施。然而,这个列表实际上比给定的例子大很多,所以有没有办法在某个地方列出它们并从该列表中检查而不是单独添加它们? 我在网上找到的与我类似的问题主要是数字,但我的数组列表将由字符串组成,所以我不得不问这个问题。

【问题讨论】:

  • 为什么它们是数字还是字符串会有所不同?逻辑是一样的。
  • 哪个版本的 bash?您可以依赖第 4 版或更高版本吗?
  • @CharlesDuffy 版本 4.3.48(1)-发布

标签: arrays bash if-statement


【解决方案1】:

使用具有可接受值的关联数组作为键:

#!/usr/bin/env bash
case $BASH_VERSION in ''|[1-3].*) echo "ERROR: Bash 4.0+ required" >&2; exit 1;; esac

declare -A values=(
  ["something"]=1
  ["something2"]=1
  ["something3"]=1
)

if [[ ${values[$var]} ]]; then
  : # do something
fi

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-21
    • 2018-01-11
    • 2013-02-04
    • 2020-10-23
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2021-08-29
    相关资源
    最近更新 更多