echo不显示正确的输出

时间:2016-01-27 23:14:27

标签: unix ksh

以下代码读取test.txt内容并基于第一个字段将第三个字段重定向到result.txt

src_fld=s1
type=11

Logic_File=`cat /home/script/test.txt`

printf '%s\n' "$Logic_File" |
{
while IFS=',' read -r line
do
fld1=`echo $line | cut -d ',' -f 1`
if [[ $type -eq $fld1 ]];then
   query=`echo $line | cut -d ',' -f 3-`
   echo $query >> /home/stg/result.txt
fi
done
}

以下是test.txt的内容:

6,STRING TO DECIMAL WITHOUT DEFAULT,cast($src_fld as DECIMAL(15,2) $tgt_fld 
7,STRING TO INTERGER WITHOUT DEFAULT,cast($src_fld as integer) $tgt_fld                
11,DEFAULT NO RULE,$src_fld

一切正常,但result.txt中的输出是$ src_fld而不是s1。谁能告诉我代码中有什么问题?

1 个答案:

答案 0 :(得分:1)

尝试替换以下行

   echo $query >> /home/stg/result.txt

这一个

   eval "echo $query" >> /home/stg/result.txt