bug-bash
[Top][All Lists]
Advanced

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

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


From: Fernan Aguero
Subject: script to provide responses to prompts (badly written C program)
Date: Mon, 31 Oct 2011 20:14:22 -0300

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



reply via email to

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