For loop to run external program


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting For loop to run external program
# 1  
Old 09-21-2011
Question For loop to run external program

Hi, I was hoping for help with a for loop to run a program (vina) repeatedly using all the files in a folder as input. Currently my code looks like this:
Code:
#!/bin/bash
FILES=/home/afalk/Desktop/battest/*.pdbqt
for f in $FILES do
vina --config /home/afalk/Desktop/A.txt --ligand "$f".pdbqt
done

vina simply runs as "vina" in the terminal and this code is my attempt at translating a working batch file I had for windows. Whenever I try to run this, and after endless changes to the syntax all I get is "line 4: syntax error near unexpected token `vina'". Can anyone see what I'm doing wrong?
# 2  
Old 09-21-2011
You nearly had it! Smilie You didn't put a ; or newline before the 'do', though.

You don't need to put the filenames in a variable. That could actually be bad -- $FILES will split "file name.pdbgt file2.pdbgt" into "file", "name.pdbgt", "file2.pdbgt". "for FILE in *" won't.

You also don't need to put the ".pdbgt" back on the end, it never left Smilie

Code:
#!/bin/bash
for f in /home/afalk/Desktop/battest/*.pdbqt
do
        vina --config /home/afalk/Desktop/A.txt --ligand "$f"
done

# 3  
Old 09-21-2011
Thank you, except now it says "line 5: vina: command not found" if I change the code to
Code:
#!/bin/bash
FILES=/home/afalk/Desktop/battest/*.pdbqt
for f in $FILES 
do
$vina --config /home/afalk/Desktop/A.txt --ligand "$f".pdbqt
done

it returns "line 5: --config: command not found" config is an internal command for vina.
# 4  
Old 09-21-2011
Well, it means what it says: it can't find vina.

If it's in the current directory, you have to run it as ./vina

Otherwise, try whereis vina, that might tell you where it is. If it's in an odd location you'd run it as /path/to/vina

You don't want $vina, that's how you'd use a variable named vina. That must be blank, causing the line to become --config ... and of course it can't find any file to run named '--config' either.
# 5  
Old 09-21-2011
Alright, had to write out the full pathway. Thank you so much!
# 6  
Old 09-21-2011
Quote:
Originally Posted by oldmanwinter
Thank you, except now it says "line 5: vina: command not found" if I change the code to
Code:
#!/bin/bash
FILES=/home/afalk/Desktop/battest/*.pdbqt
for f in $FILES 
do
$vina --config /home/afalk/Desktop/A.txt --ligand "$f".pdbqt
done

it returns "line 5: --config: command not found" config is an internal command for vina.

It is trying to run the command, --config, because $vina is empty.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Dialog with an external program using named pipes

Dear community, I communicate with an external program (maxima) using named pipes. If I use a text file to capture the output (maxima > out.txt) i can see the programs answer directly after the input written into the file. But if bypass the output into a named pipe (maxima > pipe) and capture it... (1 Reply)
Discussion started by: Pustekuchen
1 Replies

2. Shell Programming and Scripting

How to run the Shell Script from external directory using java?

Hi, I have created a Shell Script and invoke through java using Process Builder It's working fine, if (Shell script file ) in the same directory as java file. By Problem: How to run the Shell Script file( resides in external directory) using java. What configuration i have... (1 Reply)
Discussion started by: nanthagopal
1 Replies

3. Shell Programming and Scripting

how to invoke external program and capture its output

Hi all, I am using an external binary to view memory starting from a specific address and i want to automate this via PERL however there are problems. Hope you can help me ..thx The output of the programme is like below: bash-3.2$ mem_disp 12B21D20 100 Opening RO Data Memory File scp.ro... (4 Replies)
Discussion started by: ekckabatop
4 Replies

4. Shell Programming and Scripting

Passing answers to external program from KSH

I have asked this before but I haven't had any luck so far getting this to work. I use RCS(revision control system). When it runs if I pass the value 'unlock' to $3 its reassigned to $unlock. When I run the command (rcs -u'version number' 'filename') ti will ask me 1-(Do you want to break the lock... (5 Replies)
Discussion started by: pjones006
5 Replies

5. Shell Programming and Scripting

Is there a better way I could have run this loop. (For loop with two variables)

Sorry for such a dreadful title, but I'm not sure how to be more descriptive. I'm hoping some of the more gurutastic out there can take a look at a solution I came up with to a problem, and advice if there are better ways to have gone about it. To make a long story short around 20K pieces of... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

6. Programming

Run external program in background

Hi, in my program i need to run an external program in background.I am aware that there are at least 2 alternatives for this: 1)fork+exec 2)system("program &"); I have read several posts about this,and they all tend to suggest to use fork+exec (and that's what i am doing now). I have some... (2 Replies)
Discussion started by: Zipi
2 Replies

7. Programming

Problem with external program launch

Hello, in the application i'm writing i need to launch "recordmydesktop" to capture the screen,but i'm having a problem: when the recording stops,and the encoding of the saved file starts,the entire system hangs until the completion of the encoding.This happens if i launch recordmydesktop from my... (7 Replies)
Discussion started by: Zipi
7 Replies

8. Shell Programming and Scripting

File path with space as external input to the program

Hello I am getting error when the file (Folder or Application) path having space is given as external input to the shell program. It works fine for the files which has no spaces in the file name Thans, (5 Replies)
Discussion started by: keshav.murthy@r
5 Replies

9. UNIX for Dummies Questions & Answers

cannot run program

Hi, I have a program in /opt/local/bin, my path in my .profile is export PATH=/opt/local/bin:/opt/local/sbin:$PATH however when i type the program name it cannot find it, however i know the program is in /opt/local/bin? Thanks (2 Replies)
Discussion started by: c19h28O2
2 Replies

10. Shell Programming and Scripting

Passing value to an external program problem...

This code is in my 'case' statement and it all else works fine. The problem I have is that the value in 'procno' is not passed on to the external program (fireit). It is passing all zeros instead of the actual process number. By the time I get to this case statement, I know the "Number" and... (1 Reply)
Discussion started by: giannicello
1 Replies
Login or Register to Ask a Question