Re: RunThrough on Windows 2000
- To: mathgroup at smc.vnet.net
- Subject: [mg45354] Re: [mg45348] RunThrough on Windows 2000
- From: Yasvir Tesiram <tesiramy at omrf.ouhsc.edu>
- Date: Fri, 2 Jan 2004 04:23:43 -0500 (EST)
- References: <200401011054.FAA17821@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi, Some notes, in my experiments with Run and RunThrough. 1. Use a text based Mathematica session and not a Notbook interface. If you use a Notebook interface, then you have to write the output of any shell command into a file that can be intepreted by Mathematica to give you a Notebook. 2. If you use a Notebook interface, Run and RunThrough, will only give you the status codes of the external command on completion of the external command, with the exception of the cat command as below. Thus usually 0 means success and everything else is unsucessful. Some examples are given below. > In[60]:= > RunThrough ["cat", 123] > Out[60]= > 123 > > after a brief flash of the Mathematica-launched DOS box. > > If I embellish this example a bit, I get ... > > In[61]:= > RunThrough ["cat", 123+456] > Out[61]= > 579 > This is because 123+456 is a Mathematica expression and is equal to 579. > These are not the results I expected, as when this 1991 "cat" is typed > directly into the MKS DOS box I get ... > > C:\MKS> cat 123 > cat: 123: no such file or directory This happens because you don't have a file called 123 on your system. > C:\MKS> cat 123+456 > cat: 123+456: no such file or directory Again, no file called 123+456. > > I'm baffled. Does this make sense to anyone? ==>Some examples follow. Note, I have used a text based Mathematica session for the following examples. If you use a Notebook interface you will get the status codes of the command upon completeion. In[13]:= expr1=123; In[14]:= RunThrough["cat",expr1] Out[14]= 123 In[16]:= RunThrough["cat",123+456] Out[16]= 579 Here are some ways to suppress the evaluation. In[17]:= RunThrough["cat","123+456"] Out[17]= 123+456 In[18]:= RunThrough["cat",Hold[123+456]] Out[18]= Hold[123 + 456] In[19]:= RunThrough["cat",Hold[FullForm[123+456]]] Out[19]= Hold[Plus[123, 456]] The second argument to RunThrough is taken to be a Mathematica expression. Now lets say you want read in the contents of a file or the output of some external command into Mathematica. To read in you can use Get (<<). To write out you can use Put (>>). In[20]:= Table[i,{i,1,1000,1}] >> "/Users/yasvirat/tmpints" In[21]:= Run["cat","tmpints"] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, <snip>, 998, 999, 1000} Out[21]= 0 If we say In[22]:= RunThrough["cat","tmpints"] the output is simply the expression you put in. Out[22]= tmpints Likewise for In[23]:= RunThrough["cat",tmpints] Out[23]= tmpints To force RunThrough to do what Run does, you can make a Mathematica expression like; In[26]:= expr2="Run[\"cat\", \"/Users/yasvirat/tmpints\"]" Out[26]= Run["cat", "/Users/yasvirat/tmpints"] In[27]:= RunThrough["cat",ToExpression[expr2]] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, <snip>, 998, 999, 1000} Out[27]= 0 I don't expect this behaviour to be any different for a Windows 2000, just the syntax of how you express filenames etc. Cheers Yas
- References:
- RunThrough on Windows 2000
- From: Harold.Noffke@wpafb.af.mil (Harold Noffke)
- RunThrough on Windows 2000