使用函数建议使用bash脚本中的静音输出?

use*_*865 4 unix linux bash shell io-redirection

假设有人正在编写bash脚本,其中需要静默stdout,stderr并提供自定义输出.

是否可以使用如下功能:

dump(){
    "$@" > /dev/null 2>&1
}
Run Code Online (Sandbox Code Playgroud)

然后

dump rm filename || echo "custom-message"
Run Code Online (Sandbox Code Playgroud)

它无法按预期运行的可能情况是什么?

Joh*_*ica 6

这是一个很好的技术.我总是使用类似的东西.优点:

  • 保留命令的退出代码.
  • 隐藏几乎所有程序的输出,除非他们直接写入/dev/tty/dev/console,这很少见,并且可能有充分的理由.
  • 适用于shell内置函数以及二进制文件.你可以用这个cd,pushd/ popd,等等.
  • 不会停止命令从stdin读取.dump如果您愿意,可以在管道的末尾使用.
  • "$@" 使用空格,全局和其他特殊字符正确处理命令名称和参数.

它对我来说很好看!

我唯一的挑剔是名字dump不是最清楚的.