为什么我的bash脚本试图将注释作为代码运行?

时间:2012-05-03 18:32:00

标签: python bash

我正在编写一个bash脚本,以特定的顺序运行几个python程序,它看起来像这样:

#!/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

就好像它忽略了'plots'前面的'#'并试图将它作为代码运行。另一个奇怪的事情是这不会一直发生,有时第二个代码运行没有问题,有时它会崩溃。我是否遗漏了关于评论如何在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

2 个答案:

答案 0 :(得分:0)

我发现了问题!我在运行时正在编辑bash脚本,这就是导致崩溃的原因。

答案 1 :(得分:-2)

我不完全确定发生了什么,但我的猜测是它将#plots解释为脚本prog2.py的参数

为了安全起见,您可能只想将评论放在单独的一行