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

krb*_*686 2 linux shell csh ping

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

命令是:

set VAR="`ping $1 2>&1 | grep 'unknown' | cut -b 7-13`"
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*oij 6

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

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

另请注意,ping默认情况下会永远运行,您可能希望添加一个-c选项来限制它运行的次数.

set VAR="`ping localhost -c 5 |& grep 'unknown' | cut -b 7-13`"
Run Code Online (Sandbox Code Playgroud)