如何让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