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 2>&1 | grep 'unknown' | cut -b 7-13`"
但是,这不起作用。
我得到一个模糊的 "Ambiguous output redirect."
我迷路了,因为当我在终端中输入命令时,命令本身起作用了,而且我可以看到文本 unknown
如果交互式工作,您的交互式 shell 不是 csh...这可能是一件好事。 csh 中的 Stderr 重定向仅使用 >&
,但仅将 stderr 和 stdout 一起重定向到一个文件中。
另见 http://www.faqs.org/faqs/unix-faq/faq/part2/section-9.html
如果目的是弄清楚 </code> 是否解决,那么 <code>ping
无论如何都是错误的工具。尝试
set VAR=`dig +short "" || echo unknown`
2>&1
是无效的 csh
语法。这仅适用于 Bourne shell。
要通过管道传输 stdout 和 stderr,您可以使用 |&
运算符。
另请注意,ping
默认情况下将永远 运行,您可能需要添加一个 -c
选项来限制它 运行 的次数。
set VAR="`ping localhost -c 5 |& grep 'unknown' | cut -b 7-13`"
我正在尝试将管道命令的输出分配给 csh 脚本中的变量。
命令是:
set VAR="`ping 2>&1 | grep 'unknown' | cut -b 7-13`"
但是,这不起作用。 我得到一个模糊的 "Ambiguous output redirect."
我迷路了,因为当我在终端中输入命令时,命令本身起作用了,而且我可以看到文本 unknown
如果交互式工作,您的交互式 shell 不是 csh...这可能是一件好事。 csh 中的 Stderr 重定向仅使用 >&
,但仅将 stderr 和 stdout 一起重定向到一个文件中。
另见 http://www.faqs.org/faqs/unix-faq/faq/part2/section-9.html
如果目的是弄清楚 </code> 是否解决,那么 <code>ping
无论如何都是错误的工具。尝试
set VAR=`dig +short "" || echo unknown`
2>&1
是无效的 csh
语法。这仅适用于 Bourne shell。
要通过管道传输 stdout 和 stderr,您可以使用 |&
运算符。
另请注意,ping
默认情况下将永远 运行,您可能需要添加一个 -c
选项来限制它 运行 的次数。
set VAR="`ping localhost -c 5 |& grep 'unknown' | cut -b 7-13`"