Bash

SH 條件重定向

  • March 17, 2016

我希望能夠/dev/null基於命令行開關將我的腳本的一些輸出重定向到。我不知道我該怎麼做。

以一種愚蠢的方式,它會是這樣的(以過於簡化的方式):

#!/bin/sh

REDIRECT=

if [ $# -ge 1 -a "$1" = "--verbose" ]; then
   echo    "Verbose mode."
   REDIRECT='1>&2 > /dev/null'
fi

echo "Things I want to see regardless of my verbose switch."

#... Other things...

# This command and others along the script should only be seen if I am in verbose mode.
ls -l $REDIRECT

請問有什麼線索嗎?

謝謝人們。

如果您處於詳細模式,請將 STDOUT 綁定到另一個句柄,否則將這些句柄連結到 /dev/null。然後編寫腳本,使可選內容指向額外的句柄。

#!/bin/sh

exec 6>/dev/null

if [ $# -ge 1 -a "$1" = "--verbose" ]; then
echo    "Verbose mode."
exec 6>&1
fi

echo "Things I want to see regardless of my verbose switch."

#... Other things...

# This command and others along the script should only be seen if I am in verbose mode.
ls -l >&6 2>&1

那應該讓你開始。我不確定這是否特定於 BASH。那隻是很久以前的記憶。;-)

引用自:https://serverfault.com/questions/414810