如何在Bash脚本中分行编写命令并通过条件控制选项启用
Bash脚本中灵活管理packmol-memgen命令选项的方法
直接用数组来管理命令选项是最实用的方式,既能让每个选项单独分行,还能轻松通过变量控制是否启用特定选项。下面是改写后的代码:
# 初始化存储选项的数组 packmol_opts=( --pdb "$output"/${pdb_name}_${lipid}_${distxy}A/${pdb_name}.pdb --lipids "$lipid" --salt --salt_c Na+ --ffprot ff14SB --fflip lipid21 --ffwat tip3p --keepligs --preoriented --distxy_fix "$distxy" --ratio 1 --dist_wat "$dist_wat" --parametrize ) # 根据$min变量决定是否添加--minimize选项 if [[ "$min" == true ]]; then packmol_opts+=(--minimize) fi # 执行packmol-memgen命令,正确展开数组选项 packmol-memgen "${packmol_opts[@]}"
关键说明:
- 每个选项单独成行,想临时禁用某个选项时,直接在行首加
#注释即可,比如:# --salt # --salt_c Na+ - 用
if判断控制--minimize:只要$min变量值为true(或你定义的其他布尔标识,比如1),就会自动把该选项加入数组 - 所有变量用双引号包裹,避免空格、特殊字符导致的解析错误
- 执行命令时用
"${packmol_opts[@]}"展开数组,能保证每个选项被正确识别,不会因为空格拆分出错
如果需要控制其他选项,直接复制if判断的逻辑即可,比如想控制--salt是否启用,再加一段类似的条件判断就行。
内容的提问来源于stack exchange,提问作者James Starlight
相关产品推荐
相关产品推荐

