如何使用 Tcl 脚本将修改值传递给用户定义输出文件?
How to pass modify value to user define output file using Tcl script?
我有一个包含一些值的文本文件,我想通过 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
改变
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
而不是puts $mdata_file $sql_query
尝试 puts $mdata_file [subst $sql_query]
请参阅 subst command 的文档。
您还有一些拼写错误需要清理 - 重复测试 1 或测试 2 而不是使用测试 1 测试 2 测试 3。
我有一个包含一些值的文本文件,我想通过 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
改变
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
而不是puts $mdata_file $sql_query
尝试 puts $mdata_file [subst $sql_query]
请参阅 subst command 的文档。
您还有一些拼写错误需要清理 - 重复测试 1 或测试 2 而不是使用测试 1 测试 2 测试 3。