将 2 个命令重定向到同一行脚本上的文件

将 2 个命令重定向到同一行脚本上的文件

我需要编写一个脚本,将 2 个命令返回到文件。

但我希望它们位于文件的同一行上。

我想要使​​用的第一个命令是speedtest-cli --csv,第二个命令是date '+%H:%M'

我在网上搜索了一下,发现了这一点:

{ 日期'+%H:%M' ; speedtest-cli --csv;} >> 输出.csv;

但是当我使用它时,输出文件包含以下内容:

21:18
11458,MyTheValentinus,Roubaix,2017-12-15T20:18:43.049067Z,34.53116198582131,32.416,20496907.000490207,3872939.885024341

但必须在同一条线上。

我该如何做呢?

答案1

我假设你想产生一个有效.csvC奥玛s分开值,而不是将时间与第一个单元格的值一起放在speedtest-cli --csv第一个单元格中,那么这些命令应该会有所帮助(两者都做同样的事情):

printf "%s,%s" $(date +%R) "$(speedtest-cli --csv)" >>output.csv
echo $(date +%R),"$(speedtest-cli --csv)" >>output.csv

date +%R顺便说一下,与 相同date +%H:%M,其格式说明符不需要加引号。

答案2

这样写:

{ printf "$(date '+%H:%M') "; speedtest-cli --csv; } >> output.csv

或者像这样:

echo "$(date '+%H:%M') $(speedtest-cli --csv)" >> output.csv

您的方法不起作用,因为该date命令生成的输出会自动附加一个换行符。

当包装在 中时$(...),不会打印最后的换行符。

相关内容