当我尝试在tcl中运行此命令时:
tar -zcvf input.scs__pmos.sdevv.tar.gz input.scs*
我收到这条消息:
/bin/tar: input.scs*: Cannot stat: No such file or directory /bin/tar: Error exit delayed from previous errors child process exited abnormally while executing
但是,当我在Perl/shell中运行时,我得到:
perl -e 'system("tar -zcvf input.scs__pmos.sdevv.tar.gz input.scs*")'
我明白了:
input.scs input.scs~
为什么Tcl造成这种情况?从LINUX Shell运行产生相同的结果.我使用Tcl 8.5
TCL并没有扩展名的水珠(在*
默认情况下).这是设计的.如果你想扩展,你必须明确地要求它(记住扩展产生一个文件名列表,所以我们需要{*}[…]
而不是只[…]
):
exec tar -zcvf input.scs__pmos.sdevv.tar.gz {*}[glob input.scs*]
总是添加的是好的风格exec
; 只有在交互模式下才能完全放弃,这只是一个方便的功能.你的脚本需要它,所以现在养成良好的习惯.