<br><br><div class="gmail_quote">On Thu, May 12, 2011 at 11:51 PM, The Don Lachlan <span dir="ltr">&lt;<a href="http://ale-at-ale.org">ale-at-ale.org</a>@<a href="http://unpopularminds.org">unpopularminds.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im">On Thu, May 12, 2011 at 08:48:59PM -0400, Jim Kinney wrote:<br>
&gt; On Thu, May 12, 2011 at 6:45 PM, The Don Lachlan &lt;<a href="http://ale-at-ale.org" target="_blank">ale-at-ale.org</a>@<br>
&gt; <a href="http://unpopularminds.org" target="_blank">unpopularminds.org</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; On Thu, May 12, 2011 at 05:57:42PM -0400, Jim Kinney wrote:<br>
&gt; &gt; &gt; that expects a {binary name} &lt; {input data file}. {input data file} is<br>
&gt; &gt; &gt; variably named and often 20+MB. Changing {binary name} to work better is<br>
&gt; &gt; &gt; political (think Fortran 77 base code - someone in charge got their PhD<br>
&gt; &gt; with<br>
&gt; &gt; &gt; that program).<br>
&gt; &gt; &gt; so things must work as they are with my little tweaks around the edges.<br>
&gt; &gt; &gt; until I blow away the decades old mess and start over in C.<br>
&gt; &gt;<br>
&gt; &gt; That doesn&#39;t make any sense.<br>
&gt; &gt;<br>
&gt; &gt; If the Fortran code expects the data as a stream (that&#39;s what the redirect<br>
&gt; &gt; does), then why are you trying to get the file name in a shell script? What<br>
&gt; &gt; is your objective with this?<br>
&gt; &gt;<br>
&gt;<br>
&gt; For logging the combination of which fortran binary with which input file<br>
&gt; I&#39;m simulating parts of a process with a shell script. The fortran code runs<br>
&gt; for many hours.<br>
<br>
</div>Ok, so you want to modify the Fortran code to log the input file. Right?<br></blockquote><div><br>Absolutely not. No fortran modifications are in order.<br><br>The fortran code is sometimes called directly and sometimes called with a shell script wrapper. This little bit I was hacking on needed to be able to handle either form. In short, I&#39;ve added a wrapper to a wrapper. <br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
If so, you could specify the input file twice and then have Fortan pull the<br>
first line of input as the name of the input file.<br>
<br>
$ script file.data &lt; file.data<br>
<br>
but anything after that redirect is handled separately by the shell and not<br>
easily reachable by the Fortran code.<br>
<br>
<br>
Regarding cat and file redirection, you&#39;re confusing things.<br>
<div class="im"><br>
&gt; I have a simple test script my_script<br>
&gt;<br>
&gt; #!/bin/bash<br>
&gt; # this is a crap script<br>
&gt; myout=&quot;$2&quot;&#39;.crap&#39;<br>
&gt; directions=$(cat $2)<br>
&gt; echo &quot;$myout&quot;<br>
&gt; echo &quot;$directions&quot;<br>
&gt; exit<br>
&gt;<br>
&gt; It is launched by:<br>
&gt; ./my_script &lt; test1.dat<br>
<br>
</div>That&#39;s what you originally wrote. I said use<br>
<br>
  directions=`&lt;${1}`<br>
<br>
Which will work if you do &quot;script file.data &lt; file.data&quot;.<br></blockquote><div><br>But what _I_ wanted was the value of $2 followed by .crap. Yes. The useless cat to populate directions is best written as a redirect.<br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
But you sent a whole bunch of errors here because you were trying to do<br>
something different, mostly stuff I don&#39;t understand.<br></blockquote><div><br>I sent my testing where I was clearing the cobwebs by creating a test bed. <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div class="im"><br>
&gt; FYI:<br>
&gt;      shell variable redirect<br>
&gt;<br>
&gt; fred=&#39;foo bar&#39;<br>
&gt; mary=`&lt;${fred}`<br>
&gt; -bash: ${fred}: ambiguous redirect<br>
&gt;<br>
&gt; mary=`cat ${fred}`<br>
&gt; cat: foo: No such file or directory<br>
&gt; cat: bar: No such file or directory<br>
<br>
</div>Where did that come from? You cat files. If foo and bar don&#39;t exist, you<br>
can&#39;t cat them. If you&#39;re trying to pull from multiple files, then the<br>
redirection won&#39;t work any more than &quot;myscript &lt; foo bar&quot; would work.<br></blockquote><div><br>Again. I was testing scenarios to get the logic in my mind. I don&#39;t &quot;program&quot; but about once or twice a year.  <br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im"><br>
&gt;     get contents of variable<br>
&gt; mary=`echo ${fred}`<br>
&gt; echo $mary<br>
&gt; foo bar<br>
&gt;<br>
&gt;     make a file<br>
&gt; echo &quot;foo bar&quot; &gt;&gt; fred<br>
&gt; mary=$(&lt;$fred)<br>
&gt; -bash: $fred: ambiguous redirect<br>
<br>
</div>Isn&#39;t $fred still holding &quot;foo bar&quot;? You were looking for &quot;fred&quot;.<br></blockquote><div><br>yes. $fred is still a container for a string and not a string that is an actual file name. I was trying to push the contents of fred into mary when I finally remembered that redirects have to be associated with files and that I had scrambled the two connotations in my mind.<br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im"><br>
&gt;    read file<br>
&gt; cat fred<br>
&gt; foo bar<br>
&gt;<br>
&gt;     redirect file contents to shell variable<br>
&gt;  mary=`&lt;$fred`<br>
&gt; -bash: $fred: ambiguous redirect<br>
<br>
</div>See above.<br>
<div class="im"><br>
&gt;    create a reference (as shell var) to file to have redirect &quot;go through&quot;<br>
&gt; john=&#39;fred&#39;<br>
&gt; mary=`&lt;${john}`<br>
&gt; echo $mary<br>
&gt; foo bar<br>
&gt;<br>
&gt;<br>
&gt;     or just &#39;cat&#39; the damn thing and irritate R. Schwartz again :-)<br>
&gt; suzy=$(cat ${john})<br>
&gt; echo $suzy<br>
&gt; foo bar<br>
<br>
</div>WTF, dude? You have two equivalent code blocks:<br>
<div class="im"><br>
  john=&#39;fred&#39;<br>
  mary=`&lt;${john}`<br>
  echo $mary<br>
  foo bar<br>
<br>
</div>versus<br>
<br>
  john=&#39;fred&#39;<br>
<div class="im">  suzy=$(cat ${john})<br>
  echo $suzy<br>
  foo bar<br>
<br>
</div>That is *exactly* what you&#39;re doing in your test script.  The first is safer<br>
and requires no extra work.<br></blockquote><div><br>Yes they are the same. Again testing to see if there are any discernible differences. I do know that `` notation is only useful for a single functional call while $() can be nested. The later is the preferred method as the former is not as capable. <br>
<br>Many thanks for the pointers and reminders. Once the fog began lifting, I was able to do the last bit of bug bashing &lt;snigger&gt; and finish the testing of the wrapper. The real test begins shortly as the fortran warms up.<br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div><div></div><div class="h5"><br>
-L<br>
_______________________________________________<br>
Ale mailing list<br>
<a href="mailto:Ale@ale.org">Ale@ale.org</a><br>
<a href="http://mail.ale.org/mailman/listinfo/ale" target="_blank">http://mail.ale.org/mailman/listinfo/ale</a><br>
See JOBS, ANNOUNCE and SCHOOLS lists at<br>
<a href="http://mail.ale.org/mailman/listinfo" target="_blank">http://mail.ale.org/mailman/listinfo</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>-- <br>James P. Kinney III<br><br>As long as the general population is passive, apathetic, diverted to 
consumerism or hatred of the vulnerable, then the powerful can do as 
they please, and those who survive will be left to contemplate the 
outcome.<br>- <i><i><i><i>2011 Noam Chomsky</i></i></i></i><br>