隐藏脚本命令输出

Dre*_*mor 1 io-redirection shell-script

我正在构建一个 shell 脚本来自动配置具有最佳设置的特定计算机。我想隐藏这个脚本的所有输出,除了 echo 输出。是否可以?

god*_*eek 5

使用以下命令启动您的脚本:

exec 3>&1 1>/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

这会将标准输出的原始文件描述符保存到 &3,然后将标准输出和标准错误重定向到 /dev/null。每当您想打印某些内容时,将其输出重定向到 &3,例如:

echo "This message won't be output"
echo "But this one will" >&3
Run Code Online (Sandbox Code Playgroud)

如果你想隐藏那个细节,你可以定义一个与 fd 3 相呼应的函数:

say() {
    echo >&3 "$@"
}

say "This goes to the log"
Run Code Online (Sandbox Code Playgroud)