bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: script to provide responses to prompts (badly written C program)


From: Dennis Williamson
Subject: Re: script to provide responses to prompts (badly written C program)
Date: Mon, 31 Oct 2011 18:48:59 -0500

On Mon, Oct 31, 2011 at 6:14 PM, Fernan Aguero <fernan.aguero@gmail.com> wrote:
> Hi,
>
> please accept my apologies, as this is my first post here. I'm sure
> I'm asking a very stupid questions, but I'm kind of stuck with this
> ...
>
> The Problem: a badly written C program (mktrace) that doesn't accept
> input as usual.
>
> E.g. you cannot do this: 'mktrace filename', nor this 'mktrace < filename'
>
> Instead, you have to run it like this:
>
> [fernan@host] mktrace
> warning: this program uses gets(), which is unsafe.
> enter FASTA filename: (type filename here)
> enter output filename: (type another filename here)
>
> which of course does not make it easy when you have to run mktrace on
> 1000 files.
>
>
> I've started playing with bash, trying to work around this, with mixed 
> success:
>
> This doesn't work:
> #!/bin/bash
> mktrace
> echo "filename"
> echo "output"
>
> Nor this:
> #!/bin/bash
> mktrace | {
>  echo "filename"
>  echo "output"
> }
>
> However, this kind of works (though I don't quite understand why):
> #!/bin/bash
> find . -type f -name '*.fasta' | {
>  while read f
>    do
>      mktrace
>      echo "$f"
>      echo "$f.ab1"
>    done
> }
>
>
> In this latter case, my script gets mktrace to do its magic, BUT:
>
> i) only for one file in the directory (there are many files that match
> the globbing pattern)
> ii) it overwrites the original .fasta file with the expected binary
> output, and generates a new file (*.phd.1), as expected.
>
> [Note: in addition to the output filename specified, mktrace generates
> another output file, with the same namebase but ending in '.phd.1']
>
> Any idea or suggestion would be much appreciated. I'm particularly
> interested in understanding and learning along the way :)
>
> Cheers,
>
> --
> fernan
>
>

You should probably use expect instead of trying to get Bash to do it.

-- 
Visit serverfault.com to get your system administration questions answered.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]