尝试检查字符串值是否不是两个不同数组的成员。如果字符串值在任何一个中都不存在,那么我需要执行一条语句。我能够使用if语句来完成...。
if [[ $REQ_FIELDS_LIST != *"$XFR_FIELD"* && $NON_INPUT_FIELDS_LIST != *"$XFR_FIELD"* ]];then
但是,星号导致子字符串返回假阳性。不幸的是,删除“ *”和if语句根本不起作用。看来,检查此站点,在bash中唯一安全的方法是执行for循环。但是,对于两个不同的阵列,最有效的方法是什么。同样,字符串值是数组本身的成员。因此,我们已经遍历了一个数组。遍历字符串值数组,并针对每个字符串值检查该字符串是否不是其他两个数组的成员。如果是这样,请执行一条语句。
所以我需要...
for XFR_FIELD in $INPUT_FIELDS_LIST
do
if XFR field is not a member of REQ_FIELDS_LIST AND is not a member of NON_INPUT_FIELDS_LIST then
"return 0"
例如,您将这样迭代:
#!/bin/bash
INPUT_FIELDS_LIST=( one two three four five)
REQ_FIELDS_LIST=( one six seven eight )
NON_INPUT_FIELDS_LIST=( two three seven eight nine )
for ifl in "${INPUT_FIELDS_LIST[@]}"
do
for rfl in "${REQ_FIELDS_LIST[@]}"
do
myvar=0
if [[ $ifl == "$rfl" ]]
then myvar=1; break
else continue
fi
done
for nifl in "${NON_INPUT_FIELDS_LIST[@]}"
do
myvar2=0
if [[ $ifl == "$nifl" ]]
then myvar2=1; break
else continue
fi
done
if [[ $myvar == 1 ]] || [[ $myvar2 == 1 ]]
then continue
else echo "$ifl"
fi
done
手动遍历辅助循环,然后将其“标记”为无效。
最后的if语句检查是否已匹配任何一个值,如果已匹配则继续进行下一个主迭代。
输出:
four
five
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句