【问题标题】:Run an Executable Terminal Program in Linux for Multiple Files to Produce Multiple Output Files在 Linux 中为多个文件运行可执行终端程序以生成多个输出文件
【发布时间】:2014-06-19 22:18:21
【问题描述】:

我有一个在 Linux 终端中运行的可执行程序。该程序的工作原理如下:

在终端中,我输入程序的名称。然后它给了我以下提示:输出文件、时间、输入文件、选项等。我正在尝试创建一个脚本来在目录中的所有文件上运行程序。程序给出的所有提示都是相同的,除了输出和输入文件因文件而异。大约有 300 个名为 001h.pdb ... 300h.pdb 的输入文件。我需要输出文件为 001p.acc ... 300p.acc。

(另外,对程序提示的响应是:"outputfile", 1, "inputfile", bnl, next, next, allatm, next, next, no.)

什么是合理的 csh 脚本?

【问题讨论】:

  • 你的方法有什么问题?

标签: linux shell terminal executable csh


【解决方案1】:

听起来像expect 可能就是您要找的东西。见http://linux.die.net/man/1/expect。基本上,您可以编写 expect 脚本以与您需要在您拥有的 300 个文件上运行的程序进行交互,并自动响应程序提示的过程。

【讨论】:

    【解决方案2】:

    我认为这样的事情可能会奏效......

    #!/bin/bash
    
    # Loop through all .pdb files
    for f in *.pdb
    do
       echo DEBUG: Processing $f
       out=${f/h.pdb/p.acc}     # Determine name of output file
    
       # Echo all parameters needed by program "prog"
       ( echo "$out"
         echo 1
         echo "$f"
         echo bnl
         echo next
         echo next
         echo allatm
         echo next
         echo next
         echo no )  | ./prog
    done
    

    将以上内容保存在名为auto的文件中,然后键入以下内容首先更改其模式(从而使其可执行),然后运行它:

    chmod +x auto
    ./auto
    

    根据您是否重视简洁性而不是可读性,您可能更喜欢功能相同的以下内容:

    #!/bin/bash
    
    # Loop through all .pdb files
    for f in *.pdb
    do
       out=${f/h.pdb/p.acc}     # Determine name of output file
    
       echo DEBUG: Processing $f into $out
    
       # Echo all parameters needed by program "prog". Note "\n" is a newline
       echo -e "$out\n1\n$f\nbnl\nnext\nnext\nallatm\nnext\nnext\nno" | ./prog
    done
    

    【讨论】:

    • 由于某种原因终端正在响应:Missing }.
    • 您还需要将./prog 替换为您的程序名称。
    • 抱歉,我是 csh 新手。我是否将其保存在我的个人资料中?如果是这样,我认为我不能,因为我在网络计算机上。另外,后一个命令是做什么的?
    • 您需要将脚本保存为文件,因为您已经保存了.pdb 文件,所以您必须能够做到这一点。
    • 太棒了!很高兴能提供帮助:-)
    猜你喜欢
    • 2015-09-22
    • 2018-11-14
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 2015-06-14
    相关资源
    最近更新 更多