Bash
SH 條件重定向
我希望能夠
/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。那隻是很久以前的記憶。;-)