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

cmk*_*k24 5 python bash

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

#!/bin/bash
set -e
python prog1.py #make database
python prog2.py #plots
python prog3.py #more plots
Run Code Online (Sandbox Code Playgroud)

这运行正常,但是当我注释掉第一行时:

#!/bin/bash
set -e
#python prog1.py #make database
python prog2.py #plots
python prog3.py #more plots
Run Code Online (Sandbox Code Playgroud)

它崩溃了:

./python_progs.sh: line 3: plots: command not found
Run Code Online (Sandbox Code Playgroud)

就好像它忽略了“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
Run Code Online (Sandbox Code Playgroud)

当没有注释任何行时,它工作正常,但是当注释掉第 3 行和第 4 行时,它会崩溃:

./compile_dbs.sh: line 5: and: command not found
Run Code Online (Sandbox Code Playgroud)

当注释掉第 3、4 和 5 行时,它会崩溃:

./compile_dbs.sh: line 6: plots: command not found
Run Code Online (Sandbox Code Playgroud)

我运行脚本的具体步骤是:

./compile_dbs.sh
Run Code Online (Sandbox Code Playgroud)

cmk*_*k24 2

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