我有一个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
答案 0 :(得分:1)
问题在于,在|
看到它之前,Tcl标准解释器规则将引用exec
转换为未加引号的裸引脚。它是Tcl的常规语法规则(否则是一件非常好的东西)咬的地方之一。
最简单的解决方法是使用sh
作为中介。
exec cat spec.txt | sh -c {exec cut -d "|" -f 2}
大括号中的部分是shell语法,而不是Tcl,因此可以处理这种情况。