/dev/null" fi echo "Verbose mode e-6ren">
gpt4 book ai didi

bash - 如何有条件地将命令的输出重定向到/dev/null?

转载 作者:行者123 更新时间:2023-11-29 08:47:40 26 4
gpt4 key购买 nike

我有一个脚本。我想给这个脚本一个安静模式和一个冗长模式。

这相当于:

if $verbose
then
redirect="> /dev/null"
fi

echo "Verbose mode enabled" $redirect # This doesn't work because the redirect isn't evaluated.

我真的想要一种比为每个受影响的语句编写 if-elses 更好的方法。

eval 可以工作,但对其他变量有明显的副作用。

最佳答案

你可以写一个包装函数:

redirect_cmd() {
# write your test however you want; this just tests if SILENT is non-empty
if [ -n "$SILENT" ]; then
"$@" > /dev/null
else
"$@"
fi
}

然后您可以使用它来运行带有重定向的任何命令:

redirect_cmd echo "unsilenced echo"
redirect_cmd ls -d foo*

SILENT=1
redirect_cmd echo "nothing will be printed"
redirect_cmd touch but_the_command_is_still_run

(如果你需要做的只是回显这个,你当然可以使函数更简单,只回显第一个参数而不是将它们全部作为命令运行)

关于bash - 如何有条件地将命令的输出重定向到/dev/null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2520085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com