我正在尝试在脚本中创建2个变量以将错误和输出重定向到文件,并仅在屏幕上显示错误,而其他变量仅在屏幕上显示输出。当我把它作为一个变量不起作用。变量为空。有帮助吗?
#!/bin/bash
timestamp="`date +%Y%m%d%H%M%S`"
displayonlyerror="2>&1 >> /tmp/postinstall_output_$timestamp.log | tee -a /tmp/postinstall_output_$timestamp.log"
displayoutput="2>&1 |tee -a /tmp/postinstall_output_$timestamp.log"
echo "No screen session found" $displayoutput
ech "No screen session found" $displayerror
答案 0 :(得分:1)
它不会那样工作,shell在对其他令牌执行扩展之前会解析重定向。相反,将displayonlyerror
和displayoutput
定义为类似函数(file
是日志文件名,您可以对其进行更改):
displayonlyerror() {
"$@" 2>&1 >>file | tee -a file
}
displayoutput() {
"$@" 2>&1 | tee -a file
}
并像这样使用它们:
displayoutput cmd args
displayonlyerror cmd args