【问题标题】:Using Bash script to run multiple files through java code使用bash脚本通过java代码运行多个文件
【发布时间】:2016-11-24 21:51:32
【问题描述】:

我有一些用于分析文件的代码,该代码被设置为使用 /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/博士/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

它不起作用,我想我不明白如何从数组中提取文件名并以这种方式使用它们。

【问题讨论】:

    标签: java arrays bash loops


    【解决方案1】:

    ~/ 已经是/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
    

    【讨论】:

    • Hurrah 这行得通,现在来教育自己为什么行得通 ;) 谢谢 Eric
    • 有什么特别不明白的地方吗?
    【解决方案2】:

    这应该可以。

    find /home/john/Dropbox/PhD/MultiFOLDIA/Poses/ -maxdepth 1 -type f -exec java MultiFOLDIA_IMODE1 '{}' /home/john/Dropbox/PhD/MultiFOLDIA/Poses/ T0868_T0869 /home/john/Dropbox/PhD/MultiFOLDIA/T0868_T0869_'{}'_IMODE1.txt >> /home/john/Dropbox/PhD/MultiFOLDIA/MultiFOLDIA_IMODE1.log \; 
    

    另外,当重定向输出时使用>>而不是>。 > 截断文件,最后你将只有上次执行的日志 例如:

    $ echo a > test.txt
    $ echo a > test.txt
    $ cat test.txt
    a
    
    $ echo a >> test.txt
    $ echo a >> test.txt
    $ cat test.txt
    a
    a
    

    【讨论】:

    • 这不会像这样工作。您应该删除 -path 并且尝试使用未定义的 "$f"
    • 没错,我错过了这个“$f”
    • 感谢有关重定向输出的提示,非常有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2019-12-16
    • 1970-01-01
    • 2020-09-12
    • 2018-08-23
    相关资源
    最近更新 更多