使用shell脚本复制.jpg文件会出现“无法打开文件输入流”错误

时间:2016-12-09 18:16:15

标签: bash copy

复制文件的非常简单的脚本

#!/bin/bash

#copy file
mtp-getfile "6" test2.jpg

我将其设置为可执行文件并使用

运行它
sudo sh ./test.sh

它给了我一个名为test2.jpg的文件没有图标我无法打开我得到'无法打开文件输入流'错误

但是,如果我只是从命令行发出以下内容

mtp-getfile "6" test2.jpg

它按预期工作。我的脚本出了什么问题?我检查过,每种情况下生成的.jpg文件都有相同的字节数。很奇怪。

2 个答案:

答案 0 :(得分:0)

正如chepner评论的那样,你的文件可能有一个以其名字结尾的DOS(Windows)不可见行,这会导致错误。要摆脱这些不需要的字符,只需在“nix”系统上创建一个新的空白脚本并手动输入名称(不是通过复制和粘贴,以避免出现问题),比方说,将其命名为test2.sh。

然后将test.sh的所有内容复制到test2.sh(复制并粘贴)并运行test2.sh并查看它是否有效。如果没有,请尝试在新脚本上运行以下代码,以确保代码本身没有不需要的字符:

tr -d "\r" < /folder/test2.sh && echo >> /folder/test2.sh

然后再次尝试运行script2.sh以查看它是否有效。注意:上面代码的echo >> /folder/test2.sh部分只是为了确保你的新脚本以换行符结束,这是一个Posix标准(如果没有它,某些程序可能会出错,因为他们希望文件以换行符结尾)。

答案 1 :(得分:0)

显然这是一个权限问题。 我只需要做一个sudu chown test2.jpg