我有一些用于分析文件的代码,该代码设置为使用/ home / john / Dropbox / PhD / MultiFOLDIA /目录中的以下命令行输入一次分析1个文件:
java MultiFOLDIA_IMODE1 complex.1.pdb / home / john / Dropbox / PhD / MultiFOLDIA / Poses / T0868_T0869 /home/john/Dropbox/PhD/MultiFOLDIA/T0868_T0869_complex.1.pdb_IMODE1.txt> / home / john / Dropbox / PhD / MultiFOLDIA /MultiFOLDIA_IMODE1.log
我想在/ home / john / Dropbox / PhD / MultiFOLDIA / Poses /目录中的每个文件上运行命令,并尝试使用以下脚本:
#!/bin/bash
poses=(~/home/john/Dropbox/PhD/MultiFOLDIA/Poses/*)
for f in "${poses[@]}"; do
java MultiFOLDIA_IMODE1 "$f" /home/john/Dropbox/PhD/MultiFOLDIA/Poses/ T0868_T0869 /home/john/Dropbox/PhD/MultiFOLDIA/T0868_T0869_"$f"_IMODE1.txt > /home/john/Dropbox/PhD/MultiFOLDIA/MultiFOLDIA_IMODE1.log
done
它不起作用,我想我不理解如何从数组中提取文件名并以这种方式利用它们。
最佳答案
~/
已经是/home/john
。
因此~/home/john
可能不存在。
这应该使您更接近目标:
cd /home/john/Dropbox/PhD/MultiFOLDIA/Poses/
for pdb in *.pdb
do
echo "Processing $pdb"
java MultiFOLDIA_IMODE1 "$pdb" ./ T0868_T0869 ../T0868_T0869_"$pdb"_IMODE1.txt >> ../MultiFOLDIA_IMODE1.log
done