表达式未按预期在bash中解析

时间:2017-10-31 21:02:32

标签: bash

type变量不等于parent并且parents数组包含children的当前元素时,我需要将下面脚本中的表达式解析为true阵列。为什么总是假的?我希望它在迭代dev-php skipped数组的第一个元素时打印children

问题是,如果我删除表达式的右侧部分,使其看起来像if [[ ${parents[*]} =~ ${d} ]] ; then,它就可以正常工作。怎么了?

#!/bin/bash
set -e

declare -a parents=(dev-php test1 test2)
declare -a children=(dev-php something-else)

type="child"

for d in ${children[@]} ; do
    echo "testing ${d}"

    if [[ ${parents[*]} =~ ${d} && ${type} -ne parent ]] ; then
        echo "${d} skipped"
    else
        echo "${d} NOT skipped"
    fi
done

1 个答案:

答案 0 :(得分:2)

${type} -ne parent

-ne是算术运算符。使用!=表示字符串。

$type != parent

(不需要花括号。)