如何在命令行参数中使用尖括号?

use*_*933 0 tcl

如何在命令行参数中使用尖括号?

假设输入是: filename -w <input.txt>

input.txt是第二个命令行参数,它是程序的输入文件,这里 input.txt 必须用尖括号( <input.txt>)括起来。但是如果我使用尖括号,我就会出错。错误是:

sh: -c: line 0: syntax error near unexpected token `newline'
sh: -c: line 0: `demo -w '
Run Code Online (Sandbox Code Playgroud)

Mar*_*nte 5

你的问题不是很清楚。但是,在我看来,这是一个 shell 问题,而不是 Tcl 问题。

我想你filename是一个 Tcl 可执行脚本的名称,你想把它input.txt作为参数。

但是尖括号对外壳有特殊的意义。sh将 解释<为标准输入重定向,因此它读取内容input.txt并将其filename通过标准输入通道传递。

然后,sh>重定向解释为标准输出,但之后没有将输出重定向到的名称,因此它会为您提供您看到的错误,因为在>您按下Return键之后。

那么,您确定您的脚本需要用尖括号括起来的文件名吗?如果是这样,请转义括号,例如

filename -w \<input.txt\>
Run Code Online (Sandbox Code Playgroud)

否则,尝试完全删除括号并使用

filename -w input.txt
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。