我有一个稍微复杂的要求,可以根据属性文件配置基于值的表达式。
我能够在读取属性文件后将表达式构建为字符串,但是我无法使用IF条件评估表达式
cat $var_inputFile | while read line
do
arrIN=(${line//:/ })
echo $matchPattern
#if [[ ${arrIN[3]} = "SOA" && ${arrIN[2]} = "US" ]]
if [[ $matchPattern ]]
then
echo $line
fi
done
echo $matchpattern
打印
$ {arrIN [3]} =“SOA”&& $ {arrIN [2]} =“美国”
如果我取消注释该行,则过滤工作正常
#if [[ ${arrIN[3]} = "SOA" && ${arrIN[2]} = "US" ]]
然而下面的行没有匹配
if [[ $matchPattern ]]
有没有办法将表达式构造成变量,然后使用变量来评估if条件?
答案 0 :(得分:0)
您必须使用 (valid1 product valid2 product valid3 product valid4)
.map{case (((v1, v2), v3), v4) => v1 + v2 + v3 + v4}
来执行字符串。
此外,在eval
之类的变量引用周围使用双引号是明智的,否则如果变量恰好为空,则会出现语法错误。
然后你可以使用
${arrIN[3]}