我正在尝试将我的管道命令的输出分配给csh脚本中的变量。
命令是:
set VAR="`ping $1 2>&1 | grep 'unknown' | cut -b 7-13`"
然而,这不想工作。 我得到一个模糊的“不明确的输出重定向。”
我输了,因为当我在终端输入命令时命令本身有效,我可以看到文字unknown
答案 0 :(得分:6)
2>&1
无效csh
语法。这仅适用于Bourne shell。
要管道stdout和stderr,您可以使用|&
运算符。
另请注意,默认情况下ping
将永久运行,您可能需要添加-c
选项以限制其运行次数。
set VAR="`ping localhost -c 5 |& grep 'unknown' | cut -b 7-13`"
答案 1 :(得分:2)
如果它以交互方式工作,那么你的交互式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`