我正在编写一个 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)