1. 程式人生 > 其它 >docker 程式碼中的檔案路徑_windows下在docker中執行.sh檔案可能遇到的一個無法找到檔案/目錄的巨坑...

docker 程式碼中的檔案路徑_windows下在docker中執行.sh檔案可能遇到的一個無法找到檔案/目錄的巨坑...

技術標籤:docker 程式碼中的檔案路徑

2020CCF-BDCI比賽進入決賽復現時,被強制要求使用docker,然後遇到了一個非常奇葩的問題。

dfaa3a1b5995cd176cc90bc6f10ba213.png

其中指令碼run.sh中為

python lgb.py
(此處為空行)

指令碼run1.sh中為

python lgb.py

兩者差異僅為run.sh中多了一個回車。


推測問題原因在於,windows下的換行rn結束的, 而linux系統的換行為n。因此在windows下編輯的.sh檔案,換行時句尾為rn,而進入docker內後轉為linux,在識別命令換行時為n,於是之前windows中鍵入的python lgb.py變為python lgb.pyr

,即.py檔案變成了.pyr,於是無法找到實際的py檔案。

解決方法,考慮在linux命令列中可以通過空格來間隔,因此在每行回車之前鍵入一個空格,將實際的檔名與r隔開,就可以正常運行了,即將run.sh改為

python lgb.py 
(此處為空行)

其實最開始是腳本里寫了cd xx及一堆python xx.py,全部顯示找不到路徑/檔案,一層一層排查才定位,太難了。