我正在尝试编写一个 shell 脚本,将特定文件从存档 USB 拇指驱动器复制到我的 Rasberry Pi 4b。在我看来,这个剧本非常简单。
cp /media/usb0/archive/file1.zip /home/pi/app/files/
cp /media/usb0/archive/file2.zip /home/pi/app/files/
ls -Fal /home/pi/app/files/
我没有收到任何错误消息,但也file1.zip
没有file2.zip
找到/home/pi/app/files/
如果在 USB 驱动器上找不到 file2.zip,我会收到此错误消息,正如我所料。
cp: Cannot stat '/media/usb0/archive/file2.zip': No such file or directory
这意味着脚本正在执行。耶!
我在这里缺少什么?任何帮助将不胜感激。
更新:
我将脚本编辑为如下所示:
#!/bin/bash
set -x
cp /media/usb0/archive/file1.zip /home/pi/app/files/
cp /media/usb0/archive/file2.zip /home/pi/app/files/
ls -Fal /home/pi/app/files/
脚本的输出是/media/usb0/copy.sh: 2: set: Illegal option-
答案1
将文件从 Windows 结尾转换为 Unix 结尾的最简单方法是执行dos2unix
(在 apt 等中可用)。
在 Windows 上工作时,Sublime Text 也可能是一个解决方案:在菜单栏中,查看 -> 行结尾 -> Unix,应该可以解决问题。
答案2
并解决了!
这是 Windows 线路终止造成的阻碍。使用 Notepad++ 的行尾转换功能将其转换为 Unix 行终止,效果非常好。
谢谢你!