[英]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.