我正在尝试重定向我的脚本输出,需要在脚本中调用它。
filename=uname -a
filename="$filename" date
2>&1 | tee $filename".txt"
这就是我到目前为止所做的,但这显然是错误的。我不太了解SH脚本,所以非常感谢帮助
-Alex
答案 0 :(得分:4)
filename=uname -a filename="$filename" date 2>&1 | tee $filename".txt"
... 如果你看看我上面发布的代码 我正在尝试动态命名日志 并使用三通打印到两者 控制台和命令行。
我认为你正在寻找这样的东西:
filename="$(uname -n)-$(date +%F).txt"
{
dostuff
domorestuff
} 2>&1 | tee "$filename"
答案 1 :(得分:1)
错误,因为您没有正确分配变量。假设date
是GNU日期,而不是您创建的某些“日期”函数。你可能正在寻找。使用$()
语法执行命令并将其置于变量。
filename="$(uname -a)$(date)"
顺便问一下,您确定要将uname -a
用于文件名吗?您可能还需要考虑格式化日期,例如date +%Y%m%d-%H%m%s
。
答案 2 :(得分:0)
您应该使用echo将所有内容打印到控制台。然后,您可以将其重定向到日志。例如:
# my_file.sh
echo "Doing stuff"
# Do stuff
# Invocation:
my_file.sh > my_log.log
这为您提供最大的灵活性和优雅。
您也可以直接从脚本写入日志,例如:
# my_file.sh
echo "Doing stuff" > my_log.log
# Do stuff