Arrays 如何在bash中从数组生成if条件
我有这样的if条件Arrays 如何在bash中从数组生成if条件,arrays,bash,if-statement,Arrays,Bash,If Statement,我有这样的if条件 if[“$var”!=“something”]&&&[“$var”!=“something 2”]&&[“$var”!=“something 3”]&&&[“$var”!=“something 4”];然后 #做点什么 fi 它检查$var是否不等于任何给定参数,然后相应地执行操作。然而,这个列表实际上比给定的示例要大得多,所以有没有一种方法可以将它们列在某个地方,并从该列表中进行检查,而不是单独添加它们? 我在网上发现的类似问题主要是数字,但我的数组列表将由字符串组成,因
if[“$var”!=“something”]&&&[“$var”!=“something 2”]&&[“$var”!=“something 3”]&&&[“$var”!=“something 4”];然后
#做点什么
fi
它检查$var
是否不等于任何给定参数,然后相应地执行操作。然而,这个列表实际上比给定的示例要大得多,所以有没有一种方法可以将它们列在某个地方,并从该列表中进行检查,而不是单独添加它们?
我在网上发现的类似问题主要是数字,但我的数组列表将由字符串组成,因此我不得不问这个问题。使用一个关联数组,将可接受的值作为键:
#!/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
使用具有可接受值的关联数组作为键:
#!/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
为什么它们是数字还是字符串会有区别?逻辑是一样的。哪个版本的bash?你能依赖版本4或更高版本吗?@CharlesDuffy版本4.3.48(1)-release为什么它们是数字还是字符串会有区别?逻辑是一样的。哪个版本的bash?你能依赖版本4或更新版本吗?@CharlesDuffy版本4.3.48(1)-发布