Bash脚本中调用变量设置autodockZN网格中心的问题
问题:Bash脚本中正确传递gridcenter参数至prepare_gpf4zn.py
我尝试在Bash脚本中创建变量a,读取文件aver.line.comma.dat的第二列(文件唯一一行包含三个逗号分隔的坐标),并将该变量作为gridcenter参数传入prepare_gpf4zn.py脚本运行。现有代码如下:
a=$(cut -f 2 aver.line.comma.dat) $MGLROOT/bin/pythonsh ~/Downloads/autodockZN_filesAndTutorial/prepare_gpf4zn.py -l ligand.pdbqt -r protein_tz.pdbqt -o protein_tz.gpf -p npts=500,500,500 -p gridcenter=echo "$a" -p parameter_file=AD4Zn.dat
变量a期望的值为:
95.8916,53.8569,28.052
已准备好所有所需输入文件,尝试过gridcenter=$a、gridcenter=(echo $a)等方式均未成功,寻求可行的解决方法。
解决方案
你的问题存在两个关键问题,修正后即可正常传递参数:
修正
cut命令的分隔符:
因为文件是逗号分隔的,默认cut使用制表符作为分隔符,必须用-d','明确指定分隔符为逗号,才能正确提取第二列:a=$(cut -d',' -f 2 aver.line.comma.dat)正确传递变量到
gridcenter参数:
在-p参数中,直接将变量值赋值给gridcenter即可,无需额外的echo或括号包裹,用双引号包裹变量可避免空格、特殊字符导致的参数解析错误:$MGLROOT/bin/pythonsh ~/Downloads/autodockZN_filesAndTutorial/prepare_gpf4zn.py -l ligand.pdbqt -r protein_tz.pdbqt -o protein_tz.gpf -p npts=500,500,500 -p "gridcenter=$a" -p parameter_file=AD4Zn.dat
完整修正后的脚本:
# 正确提取逗号分隔的第二列 a=$(cut -d',' -f 2 aver.line.comma.dat) # 正确传递gridcenter参数 $MGLROOT/bin/pythonsh ~/Downloads/autodockZN_filesAndTutorial/prepare_gpf4zn.py -l ligand.pdbqt -r protein_tz.pdbqt -o protein_tz.gpf -p npts=500,500,500 -p "gridcenter=$a" -p parameter_file=AD4Zn.dat
内容的提问来源于stack exchange,提问作者user19619903
相关产品推荐
相关产品推荐

