如何在fish shell中将内容打印到stderr?

12
在fish-shell脚本中,如何将错误信息打印到stderr流?
例如,该消息应该发送到stderr流而不是默认的stdout流。
echo "Error: $argv[1] is not a valid option"
1个回答

20

你可以将输出重定向到 stderr,例如:

echo "Error: $argv[1] is not a valid option" 1>&2
作为参考,这里是一些在fish*中常用的IO重定向方式。
foo 1>&2 # Redirects stdout to stderr, same as bash

bar 2>&1 # Redirects stderr to stdout, same as bash

bar ^&1  # Redirects stderr to stdout, the fish way using a caret ^

* stdin、stdout 和 stderr 的文件描述符分别为 0、1 和 2。
* & 符号意味着你想要将输出重定向到一个文件流而不是文件本身。
* 比较各种 shell 中的重定向方式(bash、fish、ksh、tcsh、zsh)


2
你不需要使用 1 - 只需添加 >&2 即可,因为从标准输出重定向是默认的。 (不允许有空格 - > &2 不起作用。) - Rory O'Kane
这应该被标记为答案,我发现它非常有帮助! - mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接