我想要一个日志功能,它将文件名作为参数并将标准输出复制到所有这些文件。这是我到目前为止提出的:
function logger() {
exec > >(tee -ia /var/log/{log1,log2})
}
当我尝试用 替换{log1,log2}
时{$*}
,我得到用空格分隔的参数。所以,我想我会做这样的事情:
function logger() {
exec > >(IFS=,; tee -ia /var/log{"$*"}
}
这无法做我想要的,因为在进行变量替换之前会发生大括号扩展。所以,我想我可以这样做:
function logger() {
exec > >(IFS=,; eval "tee -ia /var/log/\{$*\}")
}
但这行为相同,即logger one two
创建一个名为{one,two}
.
这是为什么?如何让大括号扩展工作以便tee
写入多个文件?