日期和ansiweather的日志输出在同一行

问题描述 投票:0回答:1

我在我的macOS上安装了ansiweather,我想用cronjob每天记录几次天气。

这是我的代码:

date +%Y-%m-%d--%H:%M && ansiweather -l  Amsterdam,NL -s true -h false -p false >> test.txt

当我查看我的test.txt文件时,我只看到ansiweather结果,而不是日期。

我想有一个日志文件,显示每行的日期[空格] [ansiweather详细信息]。

知道怎么做吗?

shell logging io-redirection
1个回答
1
投票

让我们用伪命令替换你的命令:

$ echo 1 && echo 2 >> out.txt
1

这会将第一个命令的输出打印到标准输出,第二个命令的输出重定向到out.txt

要让它们都重定向,请将它们分组:

{ echo 1 && echo 2; } >> out.txt

但这只是解决方案的一半; out.txt将包含

1
2

分开的。

要在单行上获得输出,可以使用printf

printf '%s %s\n' "$(echo 1)" "$(echo 2)" >> out.txt

导致含有out.txt

1 2

适用于您的实际命令:

printf '%s %s\n' \
    "$(date '+%F--%R')" \
    "$(ansiweather -l  Amsterdam,NL -s true -h false -p false)" >> test.txt

请注意,+%Y-%m-%d--%H:%M可以缩写为'%F--%R'(至少使用GNU date和股票macOS date; POSIX不需要%F%R)。

© www.soinside.com 2019 - 2024. All rights reserved.