根据我的理解,以下内容应该test在 tcsh 中的标准错误上发送 ' ':
echo test >&2
Run Code Online (Sandbox Code Playgroud)
但是,它改为将 ' test'写入名为 的文件2,当我查看历史记录时,我发现实际执行的是
echo test > & 2
Run Code Online (Sandbox Code Playgroud)
我不确定哪个图层正在插入这些空格,但我可以以某种方式阻止它吗?如果没有,我想我可以随时使用> /dev/stderr。
编辑:
我没有看到这是tsch。有关man tsch详细信息,请参阅“输入/输出”部分,包括:
诊断输出可以通过带有标准输出的管道进行定向。只需使用形式|& 而不仅仅是|。
shell 目前无法在不重定向标准输出的情况下重定向诊断输出,但是 (command > output-file) >& error-file 通常是一种可接受的解决方法。输出文件或错误文件可以是 /dev/tty 以将输出发送到终端。
关于csh,来自http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/:
按照同样的思路,您不能将 csh 脚本中的错误消息按照被认为正确的方式从 stderr 导出。在 Bourne shell 中,您可能会说:
Run Code Online (Sandbox Code Playgroud)echo "$0: cannot find $file" 1>&2但是在 csh 中,您无法将 stdout 重定向出 stderr,因此您最终会做这样的蠢事:
Run Code Online (Sandbox Code Playgroud)sh -c 'echo "$0: cannot find $file" 1>&2'
我对 进行了一些快速尝试tcsh,并且怀疑它似乎也是如此(tcsh应该与 完全兼容csh)。
解决您提出的问题:如果您tcsh不能“插入空格”也没关系,因为无论如何它都不会以预期的方式解释该序列。
| 归档时间: |
|
| 查看次数: |
13998 次 |
| 最近记录: |