繁体   English   中英

csh(tcsh)指定管道命令输出时的模糊输出重定向w / stderr重定向到脚本中的变量

[英]csh (tcsh) ambiguous output redirect when assigning output of piped commands w/stderr redirect to variable in script

我正在尝试将我的管道命令的输出分配给csh脚本中的变量。

命令是:

set VAR="`ping $1 2>&1 | grep 'unknown' | cut -b 7-13`"

但是,这不想工作。 我得到了一个模糊的“不明确的输出重定向”。

我迷路了,因为当我在终端输入命令时命令本身有效,我可以看到文本unknown

2>&1是无效的csh语法。 这仅适用于Bourne shell。

要管道stdout和stderr,可以使用|&运算符。

另请注意,默认情况下ping将永远运行,您可能希望添加-c选项以限制其运行次数。

set VAR="`ping localhost -c 5 |& grep 'unknown' | cut -b 7-13`"

如果它以交互方式工作,那么你的交互式shell不是csh ......这可能是一件好事。 csh中的Stderr重定向仅使用>&但仅将stderr和stdout重定向到一个文件中。

另见http://www.faqs.org/faqs/unix-faq/faq/part2/section-9.html

如果目的是弄清楚$1是否解析,那么ping是错误的工具。 尝试

set VAR=`dig +short "$1" || echo unknown`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM