是任何方式执行linux命令为" exec cat spec.txt | cut -d" |" -f 2"在tclsh

时间:2017-05-25 08:20:30

标签: tcl

我有一个spec.txt如下所示,可以运行" cat spec.txt |的命令。 cut -d" |" -f 2"在linux shell中。

user@test-server:~/auto/acpi6/main/spec$ cat spec.txt
a1 | BMC_HEALTH       | 0x0        | discrete   | 0x0000| na        | na        | na        | na        | na        | na

user@test-server:~/auto/acpi6/main/spec$ cat spec.txt | cut -d "|" -f 2
 BMC_HEALTH

- >为什么它无法运行

的命令
"exec cat spec.txt | cut -d "|" -f 2" in tclsh
% exec cat spec.txt | cut -d "|" -f 2
couldn't execute "-f": no such file or directory

1 个答案:

答案 0 :(得分:1)

问题在于,在|看到它之前,Tcl标准解释器规则将引用exec转换为未加引号的裸引脚。它是Tcl的常规语法规则(否则是一件非常好的东西)咬的地方之一。

最简单的解决方法是使用sh作为中介。

exec cat spec.txt | sh -c {exec cut -d "|" -f 2} 

大括号中的部分是shell语法,而不是Tcl,因此可以处理这种情况。