2016-01-27 4 views
0

следующий код чтения содержимого 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

Попробуйте заменить строку ниже

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

с этим

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

Спасибо большое !! Сработало. – user1768029

+0

@ user1768029 Если этот ответ решил вашу проблему, подумайте о том, чтобы принять его, нажав галочку рядом с ним. Вы оба получите репутацию за это, а другие узнают, что он принял принятый ответ –