简单的bash脚本中的错误

我有一个小的bash脚本,在我的pi上工作,但由于某些原因在朋友的pi上踢出了错误。

最终的目标是下载一个文件,并重命名为另一个脚本使用。 这种情况每天发生4次,所以部分脚本在开始之前会删除之前的文件。 然后下载新的文件,然后重命名它,这样其他脚本就可以引用一个文件,而不是整天下载的所有四个文件。

下面是这个脚本。

#!/bin/bash

rm -r /NeoSectional/GFSMAV &
sudo wget https://www.weather.gov/source/mdl/MOS/GFSMAV.t00z -P /NeoSectional/
sleep 5
sudo mv /NeoSectional/GFSMAV.t00z /NeoSectional/GFSMAV

所以它应该删除GFSMAV这个文件

然后下载新文件GFSMAV.t00z,并将其放置在NeoSectional目录下。

等五秒钟

然后将名称从GFSMAV.t00z改为GFSMAV。

这是我在我朋友的pi上得到的输出。

getmos0.sh: line 2: $'\r': command not found
getmos0.sh: line 3: $'\r': command not found
--2020-04-22 11:50:03--  https://www.weather.gov/source/mdl/MOS/GFSMAV.t18z
Resolving www.weather.gov (www.weather.gov)... 23.1.244.20, 2600:1406:3c:498::116,     2600:1406:3c:497::116
Connecting to www.weather.gov (www.weather.gov)|23.1.244.20|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3198792 (3.0M) [text/plain]
Saving to: ‘/NeoSectional/\r/GFSMAV.t18z.1’

GFSMAV.t18z.1                     100%   [============================================================>]   3.05M  1.72MB/s    in 1.8s    

2020-04-22 11:50:05 (1.72 MB/s) - ‘/NeoSectional/\r/GFSMAV.t18z.1’ saved [3198792/3198792]

sleep: invalid time interval ‘5\r’
Try 'sleep --help' for more information.
mv: cannot stat '/NeoSectional/GFSMAV.t18z': No such file or directory

由于某些原因,它最终创建了一个名为”$’\r’的目录。

而且它在删除文件时出错了,它试图把文件放到NeoSectinoal\r中,然后因为它放到那个奇怪的目录中,所以它在最后才mv。

我们有chmod +x的bash文件。

有什么办法可以解决这个问题吗?

THANKS

解决方案:

我不知道你从上面的评论中是否清楚你的文件是 getmos0.sh 包含 \r\n (回车和换行),而不是像在MS-DOS中那样,在每一行的末尾使用 \n (行进)只像在Unix和Linux中一样。

他们给你的答案都以这个为目标。一个较短的方法是将所有的 \r 的文件,而不需要创建一个临时文件 tmp 是。

sed -i 's/\r$//' getmos0.sh

给TA打赏
共{{data.count}}人
人已打赏
解决方案

Node.js - 如何从一个数组中获取值?

2022-4-23 0:00:12

解决方案

是否可以告诉浏览器不要将`getDisplayMedia`中选择的窗口聚焦(带到前面)?

2022-4-23 0:00:14

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索