日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PyCharm编写shell脚本无法运行

發(fā)布時間:2024/4/11 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PyCharm编写shell脚本无法运行 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景

我們常常選擇使用PyCharm在本地(Windows)進行開發(fā),然后將文件遠程同步到遠程服務器(Linux)運行程序,但是這樣編寫的shell腳本常常無法運行,出現(xiàn)語法錯誤,因為好幾個朋友和我提到了這個問題,所以這里本文介紹該問題的原因和解決方法。

問題

首先,我們在本地IDE(PyCharm)中創(chuàng)建項目并配置Linux服務器的文件遠程同步(見教程),然后編寫一個test_win.sh文件并在其中寫入如下的測試代碼,然后通過右擊Deployment將其上傳到遠程服務器,這部分遠程同步的操作見我之前的教程。

#!/bin/bash while true doecho "hello" done

然后我們使用ssh工具登錄遠程服務器跑這個shell腳本,但是此時卻出現(xiàn)了下圖的錯誤,意思很簡單,我們的語法有誤,但是這么簡單的一段腳本我們可以確認看起來沒有什么問題。


那么問題究竟是因為什么呢?其實,PyCharm對換行符默認的設置是依賴系統(tǒng)的,但是實際上Windows系統(tǒng)的換行符是\r\n而Linux系統(tǒng)的換行符是\n,這就造成我們Windows上寫的文件同步到遠程服務器無法運行。

解決方案

知道了問題的原因,自然就有了解決的方案,首先,關于換行符的設置在PyCharm的File->Settings->Editor->Code Style配置中,下圖是默認配置,可以看到紅色的2處Line separator是依賴于系統(tǒng)的,也就是依賴我們當前安裝PyCharm的所在的Windows系統(tǒng)因此是\r\n符號。

而且,1處此可采用的是Default配置也就是IDE配置,我們首先將其切換為Project模式,這個模式的意思是為每個項目單獨設置Code Style配置且這個設置會覆蓋IDE的設置,如果不切換為這個模式,本項目由于開啟了下面的Enable EditorConfig support會依然按照默認的Project模式的配置,等于我們的修改是無效的,而且由于我們有各種各樣的項目,也不建議修改Default模式的配置。下面的所有解決方案都需要先切換為Project模式。

對于shell腳本無法運行,下面提供兩種解決方案,針對不同的情況:

  • 若該項目只在遠程Linux服務器中運行,如深度學習訓練項目,那么將上圖的Line separator修改為"Unix and macOS (\r)"即可然后點擊Apply然后點擊OK即可配置成功,此時對于新文件就會采用這個配置了。注意,是新文件,因為編輯器沒有權限修改已有腳本中的內容,會存在風險。 因此,現(xiàn)在我們新建一個test_linux.sh的文件,寫入和上面那個腳本一樣的內容,此時可以發(fā)現(xiàn)已經(jīng)如下圖一樣變成了LF,這個表示\n,這就是Linux系統(tǒng)需要的。

    然后我們將這個文件同步到遠程并運行,可以看到,運行成功。

  • 若該項目也需要在其他平臺運行,我不想改變其他類型的文件的換行符,那么我們只需要單獨對shell腳本類型的文件進行配置即可(因為其他文件明顯可以正常運行,沒有影響)。我們和上面一樣將Code Style的配置切換為Project模式后展開Code Style菜單欄找到下圖所示的Shell Script并勾選2處所示的為Shell腳本采用\n換行符。

    此時我們同上新建文件發(fā)現(xiàn)右下角其實還是Windows的CRLF(對應\r\n),但是當我們遠程同步之后,這里就變成了LF表示自動轉換成功,這個腳本Linux也是可以運行的,和上面方法1的效果一致。

  • 總結

    以上是生活随笔為你收集整理的PyCharm编写shell脚本无法运行的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。