我有一些文本文件,其中包含一些我希望通过TCL脚本将值传递给output.csv文件的值,但是我无法将值传递给输出文件,因为它是输出文件的值。
数据/usr/local/test/etc/file.txt
value=$test1
value1=$test2
value2=$test2
#!/usr/local/bin/tclsh
set test1 A
set test1 B
set test1 C
set fileN "output.csv"
set mdata_file [open [file join "/usr/out/input" $fileN] a]
set sql_file [open "/usr/local/test/etc/file.txt" r]
set sql_query [read $sql_file]
puts $mdata_file $sql_query
exit 0
我在output.csv
中得到这样的输出value=$test1
value1=$test2
value2=$test2
但输出应该如下
value=A
value1=B
value2=C
答案 0 :(得分:1)
变化
puts $mdata_file $sql_query
到
puts $mdata_file [subst $sql_query]
subst
命令对字符串执行替换。除非使用它,否则输入文件的确切内容将被复制到输出文件中。
您可能想要更改
set test1 A
set test1 B
set test1 C
到
set test1 A
set test2 B
set test3 C
和value2=$test2
到value2=$test3
也是。
文档:subst
答案 1 :(得分:0)
而不是puts $mdata_file $sql_query
试试puts $mdata_file [subst $sql_query]
请参阅subst command的文档。
你也有一些打字错误 - 重复test1或test2而不是使用test1 test2 test3。