l i n u x - u s e r s - g r o u p - o f - d a v i s
L U G O D
 
Next Meeting:
August 5: Social gathering
Next Installfest:
TBD
Latest News:
Jul. 4: July, August and September: Security, Photography and Programming for Kids
Page last updated:
2003 Jan 08 12:32

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] bash question
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] bash question



Sorry, the example isn't quite clear... the only reason for the line containing only '"$1";' was to demonstrate that the program that's getting called by the script is in the path, and that the program runs. The line before that is also quite stripped down from what I would use in the case I'm actually interested in:

"$1 -i$I -$2 -$3 -$4 -o$3/$J.out > /dev/null";

But it contained the elements that I wanted to test. Anyway, thanks, because the problem seems to have been the quotes. I thought I needed the quotes to force substitution of $1, $2, etc., but it seems I was wrong.

It's always something simple like that, isn't it?

Thanks,
Matt

Peter Jay Salzman wrote:
i'm not exactly sure what you're trying to do here, but i'll take a stab
at what i think you want.

if you're trying to run a program (say, ls) on the various input files
(say, hello.in) and redirect output to a similarly named output file
(say, hello.out), instead of this:


for I in *.in
do
J=`basename $I .in`
"$1 > $J.out";
"$1";
done


don't you want to do this:

for I in *.in
do
J=`basename $I .in`
$1 $I > $J.out;
done



or am i not understanding the problem correctly?

pete



begin Matt Holland <mdholland@ucdavis.edu>
Hey all, I'm trying to automate some grunt work, and for the life of me, I can't figure out where I'm going wrong. Here's a simplified version of what I'm trying to do:

-----
#!/bin/bash

# testrun.sh -- run the simulations to be done in the current directory
#
# usage: testrun.sh <prog>
# where <prog> is the program to be run on all of the input files

for I in *.in
do
J=`basename $I .in`
"$1 > $J.out";
"$1";
done
-----

When I run it, I get:

$ testrun.sh hello
/home/holland/bin/testrun.sh: hello > 0001.out: command not found
hello, world
/home/holland/bin/testrun.sh: hello > 0002.out: command not found
hello, world
/home/holland/bin/testrun.sh: hello > 0003.out: command not found
hello, world
/home/holland/bin/testrun.sh: hello > 0004.out: command not found
hello, world

So it seems that something is wrong with my output redirection, but each of the commands that it complains about works fine if I paste it into the terminal directly (also using bash).

Any ideas?

Thanks,
Matt

--
Matt Holland
Population Biology Graduate Group
University of California, Davis

_______________________________________________
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech


--
Matt Holland
Population Biology Graduate Group
University of California, Davis

_______________________________________________
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech



LinkedIn
LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
facebook
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
EDGE Tech Corp.
For donating some give-aways for our meetings.