当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
答案 0 :(得分:2)
${type} -ne parent
-ne
是算术运算符。使用!=
表示字符串。
$type != parent
(不需要花括号。)