Unix 命令在 Tcl 脚本中不起作用

Unix 命令在 Tcl 脚本中不起作用

我是 Tcl 和 UNIX 编程新手。

以下命令适用于 UNIX 命令行,但不适用于 Tcl 脚本。

$ sort -b -k8  abc.txt | awk '!a[$1]++'
error out for 8 (-k8) and 1($1) is not variable

我正在尝试对第 8 列进行排序第一的然后仅选择第 1 列上的唯一数据。

我还尝试将数据保存到文件中。

答案1

我认为你需要在字符串中转义[]and ,例如:$

send_unix_cmd "sort -k$sort_col top_$host | awk '!a\[\$$uni_col\]++' "

我还删除了{}.

答案2

我认为在Tcl脚本中执行命令应该使用exec.单引号在脚本中没有特殊含义Tcl,因此它将尝试扩展变量$1。您可以尝试以下操作:

exec sort -b -k8  abc.txt | awk {!a[$1]++} > output

如果您不重定向程序的标准输出,它将成为命令的返回值exec,因此您可以捕获它,例如:

set result [exec sort -b -k8  abc.txt | awk {!a[$1]++}]

相关内容