Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 它是什么意思-can';t使用空字符串作为";的操作数*&引用;关于tcl-?如何解决_Unix_Tcl - Fatal编程技术网

Unix 它是什么意思-can';t使用空字符串作为";的操作数*&引用;关于tcl-?如何解决

Unix 它是什么意思-can';t使用空字符串作为";的操作数*&引用;关于tcl-?如何解决,unix,tcl,Unix,Tcl,我有一个TCL脚本,如下所附 代码运行得非常好;我以前测试过几个输入,但是,我有一个输入文件Defect.csv的问题。 我尝试使用unix2dos删除空格、行并转换为unix格式,但是,我遇到了此错误-无法使用空字符串作为“*”的操作数- 我可以看到格式仍然混乱。我认为由于空格的原因,它无法识别“Y”。 我尝试了以下操作以删除空格/选项卡 cat overlappvgsnets.csv | sed's///g' sed's///g'overlappvgsnets.csv 但是,这并不能解决这个

我有一个TCL脚本,如下所附

代码运行得非常好;我以前测试过几个输入,但是,我有一个输入文件Defect.csv的问题。 我尝试使用unix2dos删除空格、行并转换为unix格式,但是,我遇到了此错误-无法使用空字符串作为“*”的操作数-

我可以看到格式仍然混乱。我认为由于空格的原因,它无法识别“Y”。 我尝试了以下操作以删除空格/选项卡 cat overlappvgsnets.csv | sed's///g' sed's///g'overlappvgsnets.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
如果用于任何表达式的任一操作数为空,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
}

问题在输入文件中; 我是从一个大数据文件中创建的,使用的是:

awk-F'[(),]''开始{OFS=“\t”;打印“X”,“Y”}{print$2,$3}文件

问题是TCL是严格的,这会导致“空间”出现问题,所以我将其改为这个,然后再改为那个


awk-F'[(),]''BEGIN{OFS=“,”print“X”,“Y”}{print$2,$3}'

你能看到我的更新和输入吗?我相信我有一些东西在创造空间,这就是为什么y没有被读取。如何删除选项卡/空格等?我尝试了标准的sed和cat过程,但windows传输中出现了一些问题(dos2unix也不这样做)。NoemiComma不是Tcl中的列表分隔符。如果删除所有空格,则每行将有一个元素([位数],[位数])。尽管如此,如果您首先使用逗号拆分,您仍然可以使用它:lassign[split$line.,]x1显示如何填充$coords列表
foreach
希望其body参数的第一个大括号与前一个参数位于同一行(或者至少在分隔它们的换行符前面有一个反斜杠);基本上这是在输入文件中。
if {$x1 eq {} || $y1 eq {}} {
    puts "Empty records"
    exit 1
}