2016-12-09 36 views
0

非常簡單的腳本複製文件複製使用shell腳本.JPG文件給出「無法打開輸入流文件」的錯誤

#!/bin/bash 

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

我將它設置爲可執行文件,並使用運行

sudo sh ./test.sh 

它給了我一個名爲test2.jpg的文件,沒有圖標,我無法打開我得到一個'無法打開文件輸入流'錯誤

但是,如果我只是從命令行發出以下命令

mtp-getfile "6" test2.jpg 

它將按預期工作。我的腳本有什麼問題?我檢查並在每種情況下生成的.jpg文件具有相同的字節數。很奇怪。

+2

你的腳本可能有DOS行結尾,在這種情況下,你實際上創建了一個名爲'test2.jpg \ r'的文件(即它包含一個尾隨回車符) 。 – chepner

回答

0

顯然這是一個權限問題。 我只需要做一個sudu chown test2.jpg

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標準(並且沒有這些標準,有些程序可能因爲期望文件以換行符結束而導致錯誤行爲)。

相關問題