Shell脚本:通过变量中的表达式评估条件是否正确

时间:2016-06-16 22:28:12

标签: shell unix scripting

我有一个稍微复杂的要求,可以根据属性文件配置基于值的表达式。

我能够在读取属性文件后将表达式构建为字符串,但是我无法使用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条件?

1 个答案:

答案 0 :(得分:0)

您必须使用 (valid1 product valid2 product valid3 product valid4) .map{case (((v1, v2), v3), v4) => v1 + v2 + v3 + v4} 来执行字符串。

此外,在eval之类的变量引用周围使用双引号是明智的,否则如果变量恰好为空,则会出现语法错误。

然后你可以使用

${arrIN[3]}