2012-05-03 10 views
4

私は特定の順序でいくつかのPythonプログラムを実行するために、bashスクリプトを書いていますし、それは次のようになります。なぜ私の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 

それは「プロット」の前に「#」を無視していると、コードとして実行しようとしているかのようです。別の奇妙なことは、これはいつも起こるわけではないことです。時には2番目のコードが問題なく実行されることもあります。時にはクラッシュすることもあります。私はbashスクリプトでのコメントの仕組みについて何か基本的なものを見逃していますか?

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

と:何の行は、それが正常に動作しますが、3行目と4行目をコメントアウトするとき、それはでクラッシュコメントしていない場合

#!/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行目、5行目をコメントアウトすると、次のようにクラッシュします。

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

正確な手順スクリプトを実行するためのものである:

./compile_dbs.sh 
+1

完全なコードは、ファイルとまったく同じですか? – MattJ

+8

ファイルの内容が正確であれば、 'xxd'を使ってそれを16進ダンプするように確認してください。そこには目に見えない文字がないことを確認してください。また、実行中にシェルスクリプトを編集すると、そのような奇妙なエラーが発生することもあります。 – derobert

+1

あなたは私たちを馬鹿にしなければなりません::Sあなたが行っている正確な手順で更新し、あなたのbashファイルに奇妙な制御文字がないかどうかを確認してください。 'set -x'を使ってスクリプトをチェックしてください – KurzedMetal

答えて

0

問題が見つかりました!実行中にbashスクリプトを編集していましたが、これがクラッシュの原因です。

-2

私は何が起こっているのか全くわからないんだけど、私の推測では、あなただけにお勧めします安全のためにスクリプトprog2.py

への引数として#plotsを解釈していることですコメントを別の行に入れてください

+3

シェルはコメントを別の行に書く必要はありません。 – derobert

+2

「コマンドが見つかりません」というエラーメッセージがbashから出てきます。だから、これはおそらくprog2.pyの内容で何もするつもりはありません。 –

関連する問題