2012-05-03 72 views
4

我寫一個bash腳本在一個特定的順序運行多個Python程序,它看起來像這樣:爲什麼我的bash腳本試圖將註釋作爲代碼運行?

#!/bin/bash 
set -e 
python prog1.py #make database 
python prog2.py #plots 
python prog3.py #more plots 

這運行正常,但是當我註釋掉的第一行:

#!/bin/bash 
set -e 
#python prog1.py #make database 
python prog2.py #plots 
python prog3.py #more plots 

它與崩潰:

./python_progs.sh: line 3: plots: command not found 

這是因爲如果忽略了「情節」的前面「#」,並試圖運行它的代碼。另一個奇怪的事情是,這不會一直髮生,有時第二個代碼運行沒有問題,有時會崩潰。我是否缺少關於bash腳本中的評論如何工作的基本知識?

對於人們評論下面這裏是確切的代碼:

#!/bin/bash 
set -e 
python footprint_hex.py >> ./paper/qso_num.txt #this makes the footpring figures 
python sed_db_read.py #makes the inital databases 
python sed_db_read2.py #makes the new databases for lum and civ and modles 
python sed_db_plots_paper.py #plots 
python sed_db_plots_paper_png.py #plots 

如果沒有行被註釋掉它工作正常,但註釋掉線3和4,當它與崩潰:

./compile_dbs.sh: line 5: and: command not found 

和當註釋掉第3,4和5行時,它會崩潰:

./compile_dbs.sh: line 6: plots: command not found 

我的確切步驟運行該腳本是:

./compile_dbs.sh 
+1

這是完整的代碼完全在文件中? – MattJ

+8

如果這是文件的確切內容,請用'xxd'確認以十六進制轉儲。確保那裏沒有任何不可見的角色。另外,如果你在運行時編輯一個shell腳本,你可以得到非常奇怪的錯誤 - 不要這樣做。 – derobert

+1

你必須馴服我們......如果不是,請更新你正在採取的確切步驟,並檢查你的bash文件是否沒有任何奇怪的控制字符。使用'set -x'檢查腳本 – KurzedMetal

回答

0

我發現這個問題!我在編輯運行時的bash腳本,這是導致崩潰的原因。

-2

我不能完全肯定這是怎麼回事,但我的猜測是,它是解釋#plots作爲參數傳遞給腳本prog2.py

爲了安全起見,你可能只是想把評論在單獨一行

+3

換行符殼牌不需要的意見是在單獨的行。 – derobert

+2

它在我看來'命令未找到'錯誤消息來自bash。所以這可能與prog2.py的內容沒有任何關係。 –

相關問題