我正在尝试使用Tcl从目录中压缩文件,但我只能压缩一个文件,但其余三个文件(a_2.txt,a_3.txt,a_4.txt)无法压缩。我想要随时压缩所有文件。 另一方面,我从命令提示符做同样的事情,我能够成功执行。
directory
a_1.txt
a_2.txt
a_3.txt
a_4.txt
#!/usr/local/bin/tclsh
set dir /usr/test/abc/
array set g_config { ZIP /usr/bin/zip }
proc zippingfile { files } {
set out_files abc.10X
set outdir /usr/test/out/
exec $g_config(ZIP) $outdir$out_files $files
}
set filenames [exec ls $dir]
cd $dir
foreach line $filenames {
append files "$line "
# the value of files should be a_1.txt a_2.txt a_3.txt a_4.txt
}
zippingfile $files
答案 0 :(得分:0)
array set g_config { ZIP /usr/bin/zip }
proc zippingfile { files } {
global g_config
set out_files abc.10X
set outdir /usr/test/out
exec $g_config(ZIP) [file join $outdir $out_files] {*}$files
}
set dir /usr/test/abc/
cd $dir
set files [glob *]
zippingfile $files
注意:
global
命令才能从proc zip
,而不是单个列表或单个字符串。ls
,使用Tcl内置glob