簡體   English   中英

從python運行shell腳本

[英]Running shell script from python

我編寫了一個小的python程序,該程序編寫了C-shell腳本,然后使用子進程調用該腳本。 但是,python無法執行腳本。 我在終端中對此進行了測試,發現腳本也不會從終端運行(即不是python問題)。 進一步的測試表明,我可以在文本編輯器(vi)中編寫相同的腳本,然后從終端成功執行該腳本(即,我認為腳本的內容不存在問題)。 最終,我發現如果嘗試使用./myscript.com直接在終端中運行python的輸出,它將無法運行。 但是,如果我用vi打開,進行任何更改,保存,然后使用從終端運行./myscript.com (即相同的指令),它會執行。 該腳本包含在下面,以備使用,但是,大多數內容都非常特定於我要運行的特定程序。 我不知道如何進一步調試它,或者不知道為什么在vi中打開,保存和關閉的效果足以允許執行腳本。 (例如,我已經檢查了權限,並且在vi步驟之后這些權限沒有更改。)有關如何進行的任何建議都值得贊賞。

#!/bin/csh
#
bin2pipe -in /full/path/to/this/script/recon.spc -bad 0.0 -noswap \
-xN 1714 \
-xT 1714 \
-xFT Freq \
-xMODE Real \
-xSW 4184.570312 \
-xCAR 10.929523 \
-xOBS 800.130005 \
-xLAB 1H \
-yN 2048 \
-yT 2048 \
-yFT Freq \
-yMODE Real \
-ySW 1700.680054 \
-yCAR 125.728023 \
-yOBS 81.075996 \
-yLAB 1H \
-ndim 2 \
|nmrPipe -fn TP -auto \
|nmrPipe -fn REV \
|nmrPipe -fn TP -auto \
-out recon.spc.pipe.ft2 -ov -verb

如果這很有用,我可以使用xxd (如上述注釋中的建議, http://linuxcommand.org/man_pages/xxd1.html )將兩個腳本文件(用python創建和一個手動編寫)轉換為十六進制

xxd script.txt output.txt

然后,我將兩個文件的輸出與diff並在文件末尾看到一個附加的十六進制字符0a 這對應於換行符。 如此處所述, 為什么文本文件應以換行符結尾? VIM在文件末尾禁用自動換行符 ,如果沒有, vi 在文件末尾添加換行符。 這使腳本可以運行。 最后沒有換行符(我沒有包含在python腳本中),該腳本將無法運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM