我有一个TCL脚本,如下所示。
代码完美无缺;我之前测试了几个输入,但是输入文件Defect.csv存在问题。 我尝试删除空格,行并使用unix2dos转换为unix格式但是,我得到此错误 - 不能使用空字符串作为“*”的操作数 -
我可以看到格式仍然搞砸了。我相信由于空间而无法识别“Y”。 我尝试了以下尝试删除空格/制表符 cat OverlapVGSnets.csv | sed's / // g' sed's / // g'OverlapVGSnets.csv 但是,这并没有解决这个问题。有什么建议吗?
参见输入
X , Y
5568687 , 260755
5568687 , 259891
5568687 , 259999
5568687 , 260755
脚本:
set x1 [lindex $coords 0]
set y1 [lindex $coords 1]
#The coordinates are to be converted into angstroms
set x2 [expr {int($x1*10)}]
set y2 [expr {int($y1*10)}]
foreach nets [::GetNetsInRegion $x2 $y2 $x2 $y2 vcg temp]
{puts $outfile $nets foreach masterclose
[::cadnavapi::layoutAPI::GetMasterCellName $nets]
{puts $outfile $master}}}} $outfile
答案 0 :(得分:1)
can't use empty string as operand of "*"
如果用于任何表达式的操作数之一为空,则Tcl将引发上述错误。
% set x1 4
4
% set x2 [expr {int($x1*10)}]
40
% set x1 {}
% set x2 [expr {int($x1*10)}]
can't use empty string as operand of "*"
%
在您的代码中,您将获得变量x1
,y1
,如下所示,
set x1 [lindex $coords 0]
set y1 [lindex $coords 1]
添加支票以确保它不为空,例如
if {$x1 eq {} || $y1 eq {}} {
puts "Empty records"
exit 1
}
答案 1 :(得分:0)
问题出在输入文件中; 我是用大数据文件创建的:
awk -F' [(),]' ' BEGIN {OFS =" \吨&#34 ;;打印" X"," Y"} {打印$ 2,$ 3}'文件
问题是TCL是严格的,这将导致"空格"所以,我改变它,这是有效的
awk -F' [(),]' ' BEGIN {OFS ="&#34 ;;打印" X"," Y"} {打印$ 2,$ 3}'