Bash脚本生成换行符-为什么



我制作了一个小型bash脚本,该脚本从网站获取当前气压并将其写入变量。气压过后,我想添加当前日期,并将所有内容写入文本文件。目标应该是一种CSV文件。

我的问题。我总是在气压和约会之间找到一条线。尝试删除sed或tr'\n'的换行符失败。

我的第二个猜测是:wget完成了"太迟了";并且回声已经完成。

所以我用&在所有命令之间。同样的结果。

操作系统是Linux。我的思维错误在哪里?

我现在不能再往前走了。提前谢谢。

Sven

PS.:这是我第一次尝试使用sed。这当然可以写得更好;(

#!/bin/bash
luftdruck=$(wget 'https://www.fg-wetter.de/aktuelle-messwerte/' -O aktuell.html && cat aktuell.html | grep -A 0 hPa | sed -e 's/<[^>]*>//g' | sed -e '/^-/d' | sed -e '/title/d' | sed -e 's/ hPa//g')
datum=$(date) 
echo -e "${luftdruck} ${datum}"  >> ausgabe.txt

sed -e 's/ hPa//g')替换为sed -e 's/ hPa//g' | dos2unix),将尾部回车(DOS/Windows(替换为换行(Unix/Linux(。

您下载的html文件使用Windows行尾(回车r+换行n(。我假设您的bash脚本只删除了ns,但用于查看文件的编辑器将r显示为换行符。

因此,您可以通过tr -d \r\n管道传输所有内容,这将删除所有换行符。

但还有一个更好的选择:只提取重要的部分,而不是整行。

luftdruck=$(
wget 'https://www.fg-wetter.de/aktuelle-messwerte/' -O - |
grep -o '[^>]*hPa' | tr -dc 0-9.
)
echo "$luftdruck $(date)" >> ausgabe.txt

最新更新