如何讓Bash在I/O重定向時解釋變量的內容,而不是簡單地將這些內容傳遞給正在執行的命令。就拿這個腳本,例如:Bash - 解釋變量的內容
#!/bin/bash
test "$1" == '--log' && LOGGING="2>&1 | tee time.log" || LOGGING=""
date $LOGGING
所需的行爲方式是,當我運行此腳本使用--log選項bash的西港島線執行
$日期2> & 1 | tee time.log
如果我沒有指定--log,那麼它只是輸出日期而不創建日誌。相反,它通過$日誌記錄的內容,日期,從而導致錯誤的CLI參數:
date: extra operand `|' Try `date --help' for more information.
有沒有辦法做到這一點,而無需編寫像
#!/bin/bash
test "$1" == '--log' && date 2>&1 | tee time.log || date
實際應用中要明顯得多比只調用「日期」複雜,所以我想避免複製和粘貼該命令兩次,如果其他只是附加重定向和日誌記錄命令。
\ *。*抽搐。 [eval is evil](http://mywiki.wooledge.org/BashFAQ/048)。 – l0b0 2011-06-09 14:17:55